我有一个查询
SELECT
count(*) as count
from matches
WHERE team1 = 9
ORDER BY data DESC, id ASC LIMIT 10
我应该期望的最大结果不应该是 10?结果我得到15,我做错了吗?
我有一个查询
SELECT
count(*) as count
from matches
WHERE team1 = 9
ORDER BY data DESC, id ASC LIMIT 10
我应该期望的最大结果不应该是 10?结果我得到15,我做错了吗?
您需要在内部选择中进行限制。
select count(*) from
(select * from matches WHERE team1 = 9 ORDER BY data DESC, id ASC LIMIT 10) ten_rows
该LIMIT 10
子句适用于查询部分之后SELECT ...
。所以它在应用之前计算行并将该数字放入一行中LIMIT 10
。
如果您使用 API 并询问结果集中有多少行,那么您确实会从查询中得到 10 的回复SELECT * FROM ... LIMIT 10
。
您只是获取count
值,limit
不应该为您计算行数。
使用LIMIT
您不会限制计数或总和,而只会限制返回的行。
换句话说,它计算表中的记录数并作为单行返回。您的选择查询匹配行数为15。
尝试使用这个,
SELECT
COUNT(*) AS COUNT
FROM matches
WHERE team1 = 9
ORDER BY DATA DESC, id ASC