我有一張沒有PK欄的表格。我不應該改變這一點。還有一個可用於排序行的數字列。如何在不使用任何函數的情況下選擇前1行或前n行,即數據庫不可知的查詢?數據庫不可知的查詢來選擇top 1或前n行?
我看着這個查詢,但它並沒有對我的情況下工作 - Can there be a database-agnostic SQL query to fetch top N rows?
我有一張沒有PK欄的表格。我不應該改變這一點。還有一個可用於排序行的數字列。如何在不使用任何函數的情況下選擇前1行或前n行,即數據庫不可知的查詢?數據庫不可知的查詢來選擇top 1或前n行?
我看着這個查詢,但它並沒有對我的情況下工作 - Can there be a database-agnostic SQL query to fetch top N rows?
每你掛線,沒有太多的數據庫無關的解決方案的:
select * from table order by col fetch first 10 rows only
select first 10 * from table order by col
select top 10 * from table order by col
select * from table order by col limit 10
select * from (select * from table order by col) where rownum <= 10
我如何在上述每個查詢中按某個列進行訂單?當我們使用頂級或頂級查詢時,我認爲這是必須的。沒有它,上述查詢是部分有用的。在SQL服務器中,只需在from後添加一個按列的順序。那其他人呢? –
@ sequel.learner:其他人一樣。 (請參閱ypercube的編輯) –
@Denis:Postgres(從8.4)和SQL-Server(2012版)支持'OFFSET/FETCH'語法。 –
可以使用(ANSI標準SQL)'ORDER BY someColumn OFFSET 0行FETCH NEXT 1行僅對;'但它不受所有DBMS支持。 –
@ypercube - 旁白,想知道我們是否可以有一個SUPER SQL平臺和SUPER SQL語言作爲所有RDBMS的前端。您可以使用一種語言查詢所有數據庫...以及不同品牌的數據庫。這樣的事情存在嗎 ? –