MySQL-同时使用计数和限制函数
我有一个包含14个条目的“实验室”表 查询MySQL-同时使用计数和限制函数,mysql,sql,database,Mysql,Sql,Database,我有一个包含14个条目的“实验室”表 查询从Labs LIMIT 018446744073709551615中选择COUNT(Labs.sid)返回“14” 但是,查询从Labs LIMIT 1 18446744073709551615中选择COUNT(Labs.sid)返回“0”(不是我预期的13)。事实上,当我设置限制行偏移值2、3、4等时,仍然返回“0” 为什么会这样?是否有一种方法可以仅使用mysql确定指定偏移量后的行数 FWIW我正在使用MySQL 5.5.9和InnoDB数据库引擎
从Labs LIMIT 018446744073709551615中选择COUNT(Labs.sid)返回“14”
但是,查询从Labs LIMIT 1 18446744073709551615中选择COUNT(Labs.sid)返回“0”(不是我预期的13)。事实上,当我设置限制行偏移值2、3、4等时,仍然返回“0”
为什么会这样?是否有一种方法可以仅使用mysql确定指定偏移量后的行数
FWIW我正在使用MySQL 5.5.9和InnoDB数据库引擎。在执行计数后应用限制
请尝试以下方法:
SELECT COUNT(sid) FROM
(
SELECT sid FROM Labs LIMIT 2, 18446744073709551615
) T1
请注意,在没有ORDER BY的情况下使用LIMIT是个坏主意,因为您不能保证顺序是一致的,因此理论上每次都可以选择不同的行(如果sid
可以为空,这很重要)。为什么不直接从计数(*)中减去偏移量呢
如果你真的想变得聪明,你可以检查这是否给你一个否定的结果,在这种情况下,返回0。如果Labs.sid
可以为空,这将给出不同的结果。
SELECT COUNT(Labs.sid) - 1 FROM ...