4

我们正在尝试做相当于 LINQ 的事情select.Skip(50).Take(25)。这是一个可以访问任何 SQL 数据库的库。所以...

  1. 是否有标准的 SQL 选择子句可以做到这一点?(很确定答案是否定的。)
  2. 如果没有,是否有专门针对 Access、DB2、MySql、Oracle、PostgreSQL 和 Sql Server 的方法?如果是这样,每个供应商如何?
4

2 回答 2

5

在 DB2 中,实际上并没有像LIMITMySQL 中那样简单的子句,尽管您可以在 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 
于 2013-07-10T18:15:49.050 回答
3

对于 MySQL,使用 LIMIT。对于一个参数,它是要返回的行数。有两个参数,它是要跳过的行数,然后是要返回的行数。

有关详细信息和示例,请参阅http://dev.mysql.com/doc/refman/5.5/en/select.html

于 2013-07-10T17:29:42.743 回答