[英]Emulate MySQL LIMIT clause in Microsoft SQL Server 2000
[英]Emulate group by, order by, limit from mysql to ms sql 2000
我在MySQL中有一個查詢:
select slscod,slsname,brc
from td_casa
group by slscod
order by slsname
limit 0,100
此查詢使用slsname
升序檢索前100個唯一銷售代碼,其中包含slsname
和brc
。
如何在MSSQL 2000中更改此查詢?
基本語法是:
select top 100 slscod,slsname,brc
from td_casa
group by slscod
order by slsname
SELECT TOP 100 slscod, slsname, brc
FROM td_casa
GROUP BY slscod, slsname, brc
ORDER BY slsname
注意:關於列'xyz'的注釋在select ...錯誤中無效我注意到您選擇了3列但在GROUP BY
子句中指定了1列。 這是描述一個MySQL的具體行為在這里 :
MySQL擴展了GROUP BY的使用,允許選擇GROUP BY子句中未提及的字段。 如果您沒有從查詢中獲得預期的結果,請閱讀第11.15節“用於GROUP BY子句的函數和修飾符”中的GROUP BY描述。
因為在MSSQL 2000中不支持ROW_NUMBER()
和LIMIT ... OFFSET ..
最后,我發現了這個查詢:
SELECT slscod, MIN(slsname) slsname, MIN(brc) brc FROM (
SELECT top 30 slscod, MIN(slsname) slsname, MIN(brc) brc FROM
(
SELECT TOP (1*30) slscod, MIN(slsname) slsname, MIN(brc) brc
FROM td_casa group by slscod
ORDER BY slsname ASC
) AS t1 group by slscod
ORDER BY slsname DESC ) AS t2 group by slscod ORDER BY MIN(slsname) ASC
如果在mysql中這是相同的:
select slscod,slsname,brc from td_casa group by slscod order by slsname limit 0,30
如果你改變TOP (2*30)
這是相同的limit 30,30
。 TOP (3*30)
這是相同的limit 60,30
,依此類推。
迫切需要努力。 謝謝all.let的歡呼聲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.