我想從底部獲得第二條記錄。我試過了
SELECT TOP 2 meetings_id FROM meetings ORDER BY meetings_date DESC
EXCEPT
SELECT TOP 1 meetings_id FROM meetings ORDER BY meetings_date DESC
但 . 中存在語法錯誤except。
當我嘗試洗掉order by它時,它可以作業,但這給了我從頂部開始的第二條記錄。
uj5u.com熱心網友回復:
嘗試使用 OFFSET 和 FETCH
select meetings_id from meetings ORDER BY meetings_date DESC
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY
抵消
拿來
uj5u.com熱心網友回復:
如果你真的因為一些奇怪的要求或瑣事而想使用EXCEPT,那么你需要將TOP查詢放入表運算式中:
SELECT meetings_id FROM
(
SELECT TOP (2) meetings_id
FROM dbo.meetings
ORDER BY meetings_date DESC
) AS bottom2
EXCEPT
SELECT meetings_id FROM
(
SELECT TOP (1) meetings_id
FROM dbo.meetings
ORDER BY meetings_date DESC
) AS bottom1;
但這既不直觀也不高效。
- 示例:db<>fiddle
- 通過 showplan 比較,展示了為什么
EXCEPT迄今為止提供的解決方案更差:db<>fiddle
uj5u.com熱心網友回復:
此解決方案僅在您的表中有 > 1 行時才有效。
SELECT TOP 1 meetings_id FROM
(SELECT TOP 2 meetings_id, meetings_date FROM meetings
ORDER BY meetings_date DESC) x
ORDER BY meetings_date;
基于此鏈接的答案。
由于沒有倒數第二行,您可能會收到錯誤或空結果。因此,在這種情況下,您的查詢將出錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452414.html
