2014-05-13 3 views
1

mysql에 다음 문장과 동등한 것이 있습니까?MYSQL에있는 문과 함께 MSSQL에 해당하는 것

With Tmp1 as (
     Select Distinct EmpID, TypeID 
     From tb_deductionBalance 
), Tmp2 as (
    Select *, 
     row_number() OVER (order by empID /* no employeeID in Tmp1 */) as RowNum 
    From Tmp1 
) 
Select * From Tmp2 
Where RowNum Between @Start and @End 

나는 MySQL의에 MSSQL 데이터베이스를 마이그레이션해야하고 그것을 변환 할 수없는 경우, MySQL의에서 다시 훨씬 더 많은 시간이 걸릴 것 같은 문 많이 있습니다. 당신이 거기 실제 정수를 사용해야합니다 있도록

덕분에

+2

MySQL은 '공통 테이블 식'을 지원하지 않습니다. 대신 하위 쿼리를 사용해야합니다. 'row_number'와 같은 분석 함수도 지원하지 않습니다. 직접 작성해야합니다. – sgeddes

+0

@sgeddes, 정확히 OP가 요구하는 것입니다. ** MYSQL의 문과 함께 MSSQL을 사용하십시오 ** –

+0

@astander - 내 의견을 편집했습니다. OP는 하위 쿼리를 대신 사용할 수 있습니다. – sgeddes

답변

0
SELECT DISTINCT EmpID, TypeID 
FROM tb_deductionBalance 
ORDER BY empID 
LIMIT YourStartNumber - 1, YourEndNumber - YourStartNumber 

불행하게도, 당신은 LIMIT에서 변수를 사용할 수 없습니다. 예를 들어 행 3에서 10까지의 결과를 얻으려면 다음을 사용해야합니다.

SELECT DISTINCT EmpID, TypeID 
FROM tb_deductionBalance 
ORDER BY empID 
LIMIT 2, 7