MySQL LIMIT 不起作用/范围

标签 mysql sql-limit

我已经得到了带有左连接的排名查询。尝试将结果限制为 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

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

查询确实会对 DESCASC 的更改使用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/

相关文章:

mysql - Apache 与 Django 应用程序和 Matplotlib 挂起

sql - 如何限制 Oracle 查询排序后返回的行数?

postgresql - Postgres查询结果转json对象

php - MySQL INSERT...SELECT 仅适用于一列

php - 我如何将这 3 个查询合并为一个?

mysql - 将 LIMIT 作为参数传递给 MySQL sproc

SQL 选择字段总和小于 N 的元素

sql - 如何为 Oracle 中给定列中的每个不同值返回 1 行?

mysql - 内部游标的最后一行被提取两次

mysql - INET_NTOA 的工作