2012-08-15 3 views
9

나는 SQL 프로 시저에서 사용할 수있는 스크립트에 대한 링크와 함께 실행되도록 Microsoft SQL Server에서 생성 된 SQL 스크립트를 변환하려고하는데, 사용중인 스크립트는ROW_NUMBER()에 대한 MySQL의 삽입에 대한

입니다.
ROW_NUMBER() OVER(ORDER BY [FIELDS]) 

내가하려고 할 때, 자동 증가에 의존하지 않는 기본 키를 생성하고

ERROR 1064 (42000) 나는이 오류를 얻을 프로 시저로 코드를 저장 : 당신은 오류가 SQL 문법 : 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. '(ORDER BY [FIELDS])'줄 근처에서 사용하십시오 [LINENO] 분명히

오류는 ROW_NUMBER OVER 내가 OVER 비트를 제거하고 ROW_NUMBER 사방

나는이 질문을 사람들이 아무것도 얻을 검색 정의되지 않은 것을 말하는 오류가있어 바로 원인은 아니라고 말하고있다 INSERT 문과 SELECT 문이 아닌 대부분의 경우 행 번호를 얻거나 마지막 ID를 삽입하기 때문에 Microsoft 서버에서 ROW_NUMBER()와 동일한 데이터를 만들 때 사용할 수 있습니다

+0

'OVER' 함수가 잘못된 인수가 있음을 말하고있다. –

+0

@ColeJohnson는 : OVER 어쨌든 MySQL을하지, 난, MSDN에 대한 링크를 가지고 단지 구글에서 검색하여 확인하고 인수는 아마 ROW_NUMBER와 같은 메시지 또는 둘 사이에 구문 오류 중 하나를 줄 것이다 권리 경우에도 함수 ...... 그리고 예 스크립트는 Microsoft SQL Server에서 작동합니다. 왜냐하면 링크 서버를 사용하기 때문에 링크 서버를 사용하지 않고 스크립트를 실제로 사용하게 만드는 것입니다. 서버 자체 –

+0

에 나는 테이블에 행 번호를 삽입하기 위해 노력하고있어, 나는 [TABLE] VALUES INTO INSERT (@ 순위 + 1)을 사용하는 것이 단지 1 나에게 허용되지 때마다 얻을 것이다 일으킬 수 없습니다 기본 키와 내가 시도했습니다 @ + 1 = –

답변

18

불행히도 MySQL에 해당하는 ROW_NUMBER()은 없지만 다음과 같이 생성하여 시뮬레이션 할 수 있습니다. 모든 행을 증가시키는 값을 보유하는 간단한 변수.

예 :

SET @rank=0; 
SELECT @rank := @rank+1 AS rank, fruit, amount 
FROM  sales 
ORDER BY amount DESC; 
+1

그것은 1,2,3 같은 행 번호를 반환하지 않습니다 .... 1,2,9,11을 돌려주고 있어요. 그건 내가 원하는 것이 아니에요. –