gpt4 book ai didi

mysql - 在 WHERE IN(子查询)中保持顺序

转载 作者:行者123 更新时间:2023-11-29 02:09:53 25 4
gpt4 key购买 nike

我在使用 WHERE IN 子句保持子查询中的顺序时遇到问题。


我正在使用下面列出的 2 个表的以下查询。

SELECT * FROM user_list WHERE uid IN (
SELECT uid from user_history ORDER BY timestamp DESC
) LIMIT 5

表 - user_list

uid name    surname
001 Alpha Apples
002 Bravo Butter
003 Charlie Charlie
004 Delta Duff
005 Echo Edward

表 - user_history

uid timestamp
003 0000-00-00 00:00:00
001 0000-00-00 00:00:01
005 0000-00-00 00:00:02

预期的结果是(ORDER BY timestamp DESC)

005 Echo    Edward
001 Alpha Apples
003 Charlie Charlie

但是它的结果是这样的

001 Alpha   Apples
003 Charlie Charlie
005 Echo Edward

ORDER BY 子句被忽略,仍然按主键 (uid) 排序。

我想知道有什么方法可以使子查询中的顺序保持不变吗?

最佳答案

不需要任何子查询使用 join 并像下面那样尝试

SELECT ul.* FROM user_list ul join user_history uh
on ul.uid=uh.uid
order by uh.timestamp desc
limit 5

子查询 order by 对主查询输出没有任何影响

关于mysql - 在 WHERE IN(子查询)中保持顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55443364/

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