簡體   English   中英

模擬組,按順序,從mysql限制到ms sql 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個唯一銷售代碼,其中包含slsnamebrc

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM