MySQL - 一起使用COUNT和LIMIT函数

时间:2011-11-12 22:01:09

标签: mysql sql database

我有一个包含14个条目的'Labs'表。

查询SELECT COUNT(Labs.sid) FROM Labs LIMIT 0, 18446744073709551615返回“14”。

然而,查询SELECT COUNT(Labs.sid) FROM Labs LIMIT 1, 18446744073709551615返回“0”(不是我预期的13)。实际上,当我设置LIMIT行偏移值2,3,4等时,仍会返回“0”。

这是为什么?有没有办法只使用mysql确定指定偏移量后的行数?

FWIW我正在使用MySQL 5.5.9和InnoDB数据库引擎。

2 个答案:

答案 0 :(得分:4)

在执行计数后应用限制。

请改为尝试:

SELECT COUNT(sid) FROM
(
    SELECT sid FROM Labs LIMIT 2, 18446744073709551615
) T1

请注意,在没有ORDER BY的情况下使用LIMIT是一个坏主意,因为您不能保证订单一致,因此理论上每次都可以选择不同的行(如果sid可以是重要的NULL)。

答案 1 :(得分:2)

为什么不直接从COUNT(*)

中减去偏移量
SELECT COUNT(Labs.sid) - 1 FROM ...