gpt4 book ai didi

mysql - 有外层ORDER BY还需要内层ORDER BY吗?

转载 作者:行者123 更新时间:2023-11-29 06:12:42 25 4
gpt4 key购买 nike

这是我的查询:

( SELECT id, table_code, seen, date_time FROM events
WHERE author_id = ? AND seen IS NULL

) UNION
( SELECT id, table_code, seen, date_time FROM events
WHERE author_id = ? AND seen IS NOT NULL
LIMIT 2

) UNION
( SELECT id, table_code, seen, date_time FROM events
WHERE author_id = ?
ORDER BY (seen IS NULL) desc, date_time desc -- inner ORDER BY
LIMIT 15
)
ORDER BY (seen IS NULL) desc, date_time desc; -- outer ORDER BY

如您所见,有一个外部 ORDER BY,其中一个子查询有自己的 ORDER BY。我相信子查询中的 ORDER BY 是无用的,因为最终结果将按外部结果排序。我对吗?或者内部 ORDER BY 对排序有什么影响?


还有关于上面查询的第二个问题:实际上我只需要 idtable_code。我已经为外部 ORDER BY 选择了 seendate_time,我可以做得更好吗?

最佳答案

当查询中有 limit 时,您需要内部 order by。因此,第三个子查询是根据 order by 选择 15 行。

一般来说,当你有limit时,你应该使用order by。如果您正在学习数据库,则尤其如此。您可能看起来得到了正确的答案——然后当它在稍后的某个时间点不起作用时感到非常惊讶。仅仅因为某些东西看起来有效并不意味着它一定有效。

外部 order by 仅对子查询返回的所有行进行排序。

关于mysql - 有外层ORDER BY还需要内层ORDER BY吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com