我们正在尝试做相当于 LINQ 的事情select.Skip(50).Take(25)
。这是一个可以访问任何 SQL 数据库的库。所以...
- 是否有标准的 SQL 选择子句可以做到这一点?(很确定答案是否定的。)
- 如果没有,是否有专门针对 Access、DB2、MySql、Oracle、PostgreSQL 和 Sql Server 的方法?如果是这样,每个供应商如何?
在 DB2 中,实际上并没有像LIMIT
MySQL 中那样简单的子句,尽管您可以在 DB2 for Linux/Unix/Windows 上启用 MySQL 兼容性:
db2set DB2_COMPATIBILITY_VECTOR=MYS
db2stop
db2start
或者,您可以使用 ROW_NUMBER() 窗口函数来获得类似的东西:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY id) AS rn
,S.*
FROM your_table AS S
) AS A
WHERE rn BETWEEN 10 AND 20
对于 MySQL,使用 LIMIT。对于一个参数,它是要返回的行数。有两个参数,它是要跳过的行数,然后是要返回的行数。
有关详细信息和示例,请参阅http://dev.mysql.com/doc/refman/5.5/en/select.html。