带有LIMIT的MySQL COUNT

Lee*_*Lee 43 mysql sql limit sql-limit

我想要做的是SUM一列,但也要COUNT它总和的行数,限制不超过5行.所以我的查询是:

SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5
Run Code Online (Sandbox Code Playgroud)

我所期待的是COUNT(*)高达5(我不能假设它在我的代码逻辑中总是5,因为它可能少于5个答案),最多 5行的得分总和.

相反,我似乎得到的是匹配行的总数(用户为1)作为计数,以及这些行的得分总和.这些数字不会改变我是否把LIMIT 1或者LIMIT 5甚至是LIMIT 50.

相信在这种情况下我认为会起作用

SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a
Run Code Online (Sandbox Code Playgroud)

但对于这样一个简单的查询来说,这似乎有点令人费解,而且在高流量脚本中,我希望它尽可能高效.

我错过了什么吗?几年前我确实发现了这个错误报告似乎与这个"问题"有关,但我认为它实际上并不是一个错误?

Fab*_*bio 45

这实际上是您的查询的工作方式,并且是正常行为.使用LIMIT您不会限制计数或总和,只会限制返回的行.因此,您的查询将返回n您的LIMIT子句中所述的行.由于您的查询实际上只返回一行,因此应用(非零)限制对结果没有影响.

但是,您的第二个查询将按预期工作,并且是解决此问题的既定方法.