2009-10-21 1 views
2

, 왜 것이 코드 :SQL 서버는 함께 "선택은 고장"2000 TOP 절 SQL Server 2000의 개발자 버전을 사용

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '10'.

이 코드 :이 오류에

select top 10 * from table 

결과

이 오류에
select * from master m 
left join locality l on m.localityid = l.localityid 

결과 :

Server: Msg 170, Level 15, State 1, Line 2 Line 2: Incorrect syntax near 'left'.

+0

SSMS에서 오류 메시지가 나타 납니까? 다른 쿼리가없는 새로운 창에서? – Andomar

+0

젠장, 여기에 downvotes 빠른 있습니다. ORDER BY로 TOP 10을 제안하려고했습니다. 그것은 빨리 downvoted되었습니다. 나는 단지 코멘트에 나의 대답을 게시 할 것이다. ORDER BY를 TOP 10에 넣고 ORDER BY없이 TOP 10을 넣으면 어쨌든 결정되지 않은 결과가 나타납니다. –

+0

이렇게 ... ORDER BY를 추가하면 ORDERBY-TOP이 낮더라도 ORDER BY를 추가하는 것이 좋습니다. 결과를 내뱉을 것이다. –

답변

2

답변은 데이터베이스 호환성이었습니다. 그것은 60로 설정하고,

80을 했어야 여기에 내가 80로 변경 http://msdn.microsoft.com/en-us/library/bb510680.aspx

The value must be one of the following:
- 80 = SQL Server 2000
- 90 = SQL Server 2005
- 100 = SQL Server 2008

에서 추출물의 모든 지금, 잘.

+0

흥미 롭습니다. 이 정보는 어디에서 찾을 수 있습니까? – Raptor

+0

나는 Enterprise Manager의 데이터베이스 속성에서 옵션을 찾았습니다. :) –

1

이것이 깨지는 이유는 볼 수 없습니다. 설치 또는 설정과의 호환성 문제 일 수 있습니다. 쿼리를 어떻게 실행하고 있습니까? 쿼리 분석기에서?

몇 가지 빠른 제안으로 10 개를 괄호 안에 넣으십시오. SELECT TOP (10) * FROM ..... 또한 AS 키워드를 사용하여 테이블의 별명을 지정하십시오. 예 : SELECT * FROM master AS m ...

+0

+1과의 호환성에 대해 언급했기 때문입니다. –

+0

TOP (10)는 2000 년에 작동하지 않아야합니다. 괄호는 2005 년 이상입니다. –

0

두 쿼리 모두 아무 문제가 없습니다. 쿼리 분석기에서 실행하고 있습니까?

첫 번째 쿼리에서 "SELECT TOP 10"을 선택하고 두 번째 쿼리에서 "SELECT * FROM MASTER M LEFT"를 선택하면 오류를 재현 할 수 있습니다. 따라서 쿼리 분석기에서 실행하지 않으면 어쩌면 쿼리 문자열이 어플 리케이션의 코드에서 변경 될 수 있습니까?

0

쿼리에 문제가 없습니다. 어떤 쿼리 분석기를 사용하고 있습니까 (MSDE에는 GUI가 없습니다)?