问题已发布,但标记为重复。请注意ORDER BY
我知道具有多列和 窗口函数MIN()
例如用于简单情况 两列。
假设我有一个所谓的Contact
表(表 1)。我想要什么 实现是先按Status
排序,而不是在结果内排序,排序 按CalledAt
Client
(通过CreatedAt
保持Client
靠近 同时保持Client
从第一次排序开始的顺序)
我的解释,如果提出更好的问题/解释,请提出更好的问题/解释 它使事情更加清晰。
谢谢
第 0 步:
ID | 用户 | 客户端 | 调用状态 | |
---|---|---|---|---|
1 | B | Y | 2022-02-07 | 不回答 |
2 | A Y | 2022-02-09 | 答案 | |
3 | A | X | 2022-02-08 | 答案 |
4 | B | X | 2022-02-10 | 不回答 |
5 | A | X | 2022-02-06 | 答案 |
6 | B | Z | 2022-02-11 | 不回答 |
在 MySQL 5.x 中
SELECT
yourTable.*
FROM
yourTable
INNER JOIN
(
SELECT
client,
MIN(id) AS min_id,
MIN(Status) AS min_status
FROM
yourTable
GROUP BY
client
)
AS client
ON client.client = yourTable.client
ORDER BY
client.min_status,
client.min_id,
yourTable.calledAt