2014-05-13 15 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 

我不得不遷移MSSQL數據庫MySQL,而且也有很多這將需要更多的時間在mysql中重新如果它不能被翻譯這樣的語句。

感謝

+2

MySQL不支持'公用表expressions'。相反,你必須使用子查詢。也不支持'row_number'等分析函數 - 你必須自己編寫。 – sgeddes

+0

@sgeddes,這正是OP所要求的,**等同於MSSQL的語句在MYSQL中** –

+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