3 回答
TA貢獻2051條經驗 獲得超10個贊
SELECT TOP n *
FROM tablename
WHERE key NOT IN (
SELECT TOP x key
FROM tablename
ORDER BY key
DESC
);
TA貢獻1839條經驗 獲得超15個贊
這是僅在Sql Server 2005及更高版本中有效的另一種解決方案,因為它使用except語句。但是我還是分享。如果要獲取記錄50-75,請輸入:
select * from (
SELECT top 75 COL1, COL2
FROM MYTABLE order by COL3
) as foo
except
select * from (
SELECT top 50 COL1, COL2
FROM MYTABLE order by COL3
) as bar
TA貢獻1801條經驗 獲得超8個贊
僅在需要LIMIT時,ms sql具有等效的TOP關鍵字,因此很清楚。當您需要使用OFFSET進行LIMIT時,您可以嘗試使用如前所述的一些技巧,但是它們都會增加一些開銷,例如,用于訂購一種方式然后再訂購另一種方式,或者昂貴的NOT IN操作。我認為不需要所有這些級聯。在我看來,最干凈的解決方案是在SQL端使用無偏移的TOP,然后使用適當的客戶端方法(如php中的mssql_data_seek)尋求所需的起始記錄。盡管這不是純SQL解決方案,但我認為這是最好的解決方案,因為它不會增加任何開銷(跳過的記錄在您經過它們時將不會在網絡上傳輸,如果您擔心的話) )。
- 3 回答
- 0 關注
- 798 瀏覽
添加回答
舉報
