0

我有左连接的排名查询。试图将结果限制为 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

我知道我可以将它包装到另一个选择中,然后限制它(这就是它曾经的工作方式),但需要进行更改,因为这是更复杂查询的一部分。

Query 确实会对变化DESC做出反应ASC,但 onLIMIT val不会。如果我b.user_id改为app.user_id- 它会抛出#1054 - Unknown column 'app.user_id' in 'on clause'

我如何限制它最多获得 3 行?我使用的范围在哪里LIMIT

4

1 回答 1

1

您显示的查询最多将返回三行。LIMIT子句的“范围”是SELECT您显示的查询中的最外层。

我们可以设置一个 SQL fiddle 来演示,但您也可以轻松地对其进行测试。您不能让该查询返回超过三行。

于 2015-02-20T03:36:34.353 回答