我有一个包含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数据库引擎。
答案 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 ...