我有一张没有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的前端。您可以使用一种语言查询所有数据库...以及不同品牌的数据库。这样的事情存在吗 ? –