3

我有一个查询

SELECT 
count(*) as count 
from matches 
WHERE team1 = 9 
ORDER BY data DESC, id ASC LIMIT 10

我应该期望的最大结果不应该是 10?结果我得到15,我做错了吗?

4

4 回答 4

3

您需要在内部选择中进行限制。

select count(*) from
(select * from matches WHERE team1 = 9 ORDER BY data DESC, id ASC LIMIT 10) ten_rows

sql小提琴

于 2013-11-13T05:25:35.787 回答
1

LIMIT 10子句适用于查询部分之后SELECT ...。所以它在应用之前计算行并将该数字放入一行中LIMIT 10

如果您使用 API 并询问结果集中有多少行,那么您确实会从查询中得到 10 的回复SELECT * FROM ... LIMIT 10

于 2013-11-13T05:16:53.987 回答
1

您只是获取count值,limit不应该为您计算行数。

使用LIMIT您不会限制计数或总和,而只会限制返回的行。

换句话说,它计算表中的记录数并作为单行返回。您的选择查询匹配行数为15

于 2013-11-13T05:17:57.533 回答
0

尝试使用这个,

SELECT 
COUNT(*) AS COUNT 
FROM matches 
WHERE team1 = 9 
ORDER BY DATA DESC, id ASC 
于 2013-11-13T05:28:41.460 回答