gpt4 book ai didi

mysql - ORDER BY 先提,再按另一列

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

假设我有一个名为“消息”的表:

+-----------+--------+
| timestamp | poster |
+-----------+--------+
| 1 | John |
| 2 | Peter |
| 3 | Peter |
| 4 | Chris |
| 5 | John |
+-----------+--------+

我想要一个查询首先列出第一个发帖者的所有帖子,然后是第二个发帖者的所有帖子,等等。不使用子查询。第一张海报由时间戳决定。找出谁是第一名并返回他们所有的帖子,然后谁是第二名:

+-----------+--------+
| timestamp | poster |
+-----------+--------+
| 1 | John |
| 5 | John |
| 2 | Peter |
| 3 | Peter |
| 4 | Chris |
+-----------+--------+

编辑
好吧,我把问题想得太简单了。你给出的非常基本的例子是因为 (J)ohn 在 (P)eter 之前出现。如果彼得是第一个呢?您需要将 DESC 添加到海报条款中。您使用简单的 ORDER BY 的 SQL 语句没有解决按第一、第二、第三等排序的问题。

再次编辑
我在混音中添加了“克里斯”,以使其更清楚我想要什么。约翰是第一个海报;得到他所有的帖子。然后是彼得,因为他是第二名。然后是克里斯。

最佳答案

我认为除了创建另一个结果集并加入它之外别无他法:

SELECT poster, MIN(timestamp) AS first_ts
FROM messages
GROUP BY poster
ORDER BY first_ts;

结果:

+--------+-----------+
| poster | first_ts |
+--------+-----------+
| John | 1 |
| Peter | 2 |
| Chris | 4 |
+--------+-----------+

关于mysql - ORDER BY 先提,再按另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22242208/

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