gpt4 book ai didi

MySQL 按字段排序

转载 作者:可可西里 更新时间:2023-11-01 08:37:02 27 4
gpt4 key购买 nike

您好,我正在尝试使用它们的状态来订购域数据。您可能知道,域状态 DOM_EXP 或 DOM_DAKT 在域命中 DOM_HELD 之前应用,因此我不关心其中一个状态在成为 DOM_HELD 之前是否有域

我如何订购这些数据?使用下面提供的选择,我只能实现 DOM_DAKT 正在表现 DOM_EXP 但我希望它介于两者之间,按 exp_date 排序

SELECT domain_id, status, exp_date 
FROM domains
ORDER BY
field (status, 'DOM_DEL', 'DOM_HELD', 'DOM_EXP', 'DOM_DAKT'),
exp_date ASC;

+-----------+----------+---------------------+
| domain_id | status | exp_date |
+-----------+----------+---------------------+
| 2 | DOM_DEL | 2012-02-02 10:47:33 |
| 4 | DOM_HELD | 2012-02-02 10:47:38 |
| 5 | DOM_HELD | 2012-02-02 10:47:40 |
| 7 | DOM_HELD | 2012-02-02 10:47:44 |
| 1 | DOM_EXP | 2012-02-02 10:47:27 |
| 3 | DOM_EXP | 2012-02-02 10:47:35 |
| 6 | DOM_EXP | 2012-02-02 10:47:42 |
| 54 | DOM_DAKT | 2012-02-02 10:47:39 |
+-----------+----------+---------------------+

结果应该是这样的

+-----------+----------+---------------------+
| domain_id | status | exp_date |
+-----------+----------+---------------------+
| 2 | DOM_DEL | 2012-02-02 10:47:33 |
| 4 | DOM_HELD | 2012-02-02 10:47:38 |
| 5 | DOM_HELD | 2012-02-02 10:47:40 |
| 7 | DOM_HELD | 2012-02-02 10:47:44 |
| 1 | DOM_EXP | 2012-02-02 10:47:27 |
| 3 | DOM_EXP | 2012-02-02 10:47:35 |
| 54 | DOM_DAKT | 2012-02-02 10:47:39 |
| 6 | DOM_EXP | 2012-02-02 10:47:42 |
+-----------+----------+---------------------+

最佳答案

首先按状态的“等级”排序,其中 DOM_EXPDOM_DAKT 被认为具有相同的等级。然后按 EXP_DATE 在状态的每个“等级”内排序

SELECT domain_id, status, exp_date 
FROM domains
ORDER BY CASE WHEN status = 'DOM_DEL' THEN 1
WHEN status = 'DOM_HELD' THEN 2
WHEN status = 'DOM_EXP' THEN 3
WHEN status = 'DOM_DAKT' THEN 3 -- EXP and DAKT are "of equal rank"
END,
EXP_DATE

CASE 表达式看成一个映射 status => ordering rank

关于MySQL 按字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180320/

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