2014-10-31 2 views
1

이 쿼리는 mysql에서 잘 실행되지만 mssql에서는 실행할 수 없다. 왜?mysql에서 mysql 쿼리가 실행되지 않는다.

저를 판단하지 마십시오, 나는 mssql에서 새롭다.

UPDATE cvcolumnlist 
    SET columnindex=columnindex+1 
    WHERE cvid=40 AND columnindex>=3 
ORDER BY columnindex DESC 

오류 :

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'order'. 
+12

왜 UPDATE 문을 사용해야합니까? ORDER를 제거하십시오 .. –

+1

단일 코멘트에서 해결 된 질문 (Mihai lorga). – Alternatex

+0

아, 내가 vtiger를 사용하고 있으며 mssql에 포트를 연결하려고합니다. 감사합니다. –

답변

2

당신은 단지 ORDER 절을 제거해야합니다. ORDER는 UPDATE 문에서 무의미합니다.

UPDATE cvcolumnlist 
    SET columnindex=columnindex+1 
    WHERE cvid=40 AND columnindex>=3 
1
UPDATE cvcolumnlist 
SET columnindex = columnindex+1 
WHERE cvid = 40 
    AND columnindex > 2 

1

당신은 BY 절 모든 주문에 필요하지 않습니다 작동합니다. 이는 데이터베이스에서 데이터가 SELECT 인 경우에만 해당됩니다.

SQL은 지정된 구조의 언어이지만 다양한 SQL 엔진이 쿼리를 다르게 구문 분석하고 많은 SQL 기능이 언어로 정의되지 않았기 때문에 다른 구문을 사용할 수 있습니다.

예를 들어 mysql에서 LIMIT 키워드를 사용하면 반환되는 레코드 수를 제한 할 수 있으며 mssql에서는 ROWNUMBER을 사용하고 oracle은 ROWNUM 시스템을 사용합니다.

1
UPDATE [cvcolumnlist] 
SET [columnindex] = [columnindex] + 1 
WHERE [cvid] = 40 AND [columnindex] >= 3 

이 내용이 적용되는지 잘 모르겠습니다. 대부분의 쿼리는 이와 비슷한 것을 사용합니다.

UPDATE [database].[dbo].[cvcolumnlist] 
SET [columnindex] = [columnindex] + 1 
WHERE [cvid] = 40 AND [columnindex] >= 3 
관련 문제