我已经得到了带有左连接的排名查询。尝试将结果限制为 3 行,但获取所有结果。
SELECT
CONCAT(users.name, users.surname) n,
total_time v,
1+(SELECT count(*) from app a WHERE a.total_time > b.total_time) r
FROM app b
LEFT JOIN users
ON b.user_id = users.user_id
ORDER by total_time DESC
LIMIT 3
我知道我可以将它包装到另一个选择中,然后限制它(这就是它的样子,它曾经工作过),但需要进行更改,因为这是更复杂查询的一部分。
查询确实会对 DESC
到 ASC
的更改使用react,但对 LIMIT val
则不会。
如果我将 b.user_id
更改为 app.user_id
- 它会抛出 #1054 - “on 子句”中的未知列“app.user_id”
如何限制最多 3 行?我使用的LIMIT
范围在哪里?
最佳答案
您显示的查询最多返回三行。 LIMIT
子句的“范围”是您所显示的查询中最外层的 SELECT
。
我们可以设置一个 SQL fiddle 来演示,但您也可以轻松地测试它。您无法让该查询返回超过三行。
关于MySQL LIMIT 不起作用/范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621051/