我試圖用這個查詢得到我的表的最後和下一行:SQL語句返回錯誤的值(TOP N ... ORDER BY)
SELECT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
UNION
SELECT TOP 2 Nummer FROM Empfänger WHERE Nummer >= 4748 ORDER BY Nummer ASC;
主鍵「Nummer」是獨一無二的和自增,所以
4747, 4748, 4749
應該恕我直言,返回上述的數字,而是返回:
4747, 4798, 4799
當我使用Access打開數據庫並將篩選器設置爲「之間」時,值顯示正確。
我改變了語句:
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
UNION
SELECT DISTINCT Nummer FROM Empfänger WHERE Nummer = 4748
UNION
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer > 4748 ORDER BY Nummer ASC;
這工作近乎完美。
4747, 4748, 4750
當我寫每一個語句返回正確的價值觀單個查詢...
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer < 4748 ORDER BY Nummer DESC
= 4747
SELECT DISTINCT Nummer FROM Empfänger WHERE Nummer = 4748
= 4748
SELECT DISTINCT TOP 1 Nummer FROM Empfänger WHERE Nummer > 4748 ORDER BY Nummer ASC;
= 4749
\
我檢查一遍,突然上面所示的查詢工作。 謝謝你的幫助。
您正在使用哪些DBMS?在您的數據庫管理系統中'order by'之前是否應用了'TOP n'子句?檢查文檔! –
我使用Access 2007,但數據庫最初是在Access 1997中編寫的。 Order by子句應用於TOP子句之後,我相信。 – jAC