如何在 MySQL 中使用 CASE 语句按特定 ID 优先级的时间戳对行进行排序?

Barbara Streisand
发布: 2024-11-23 06:00:18
原创
203 人浏览过

How to Order Rows by Timestamps Prioritized by Specific IDs using CASE Statement in MySQL?

MYSQL ORDER BY CASE 问题:组合时间戳进行排序

在所呈现的场景中,我们有一个包含四行的表,其中每行包含两个 ID 和两个时间戳。任务是检索所有四行,并以特定方式根据时间戳对它们进行排序。

目标是当 id_one 匹配 27 时优先排序 timestamp_one 列,并在 id_two 匹配 27 时优先排序 timestamp_two 列。预期的输出是对行进行排序,就像两个时间戳列是一个一样。

为了实现这一点,我们可以将现有语句修改为如下:

SELECT id_one, id_two, timestamp_one, timestamp_two
FROM tablename
WHERE id_one = 27
    OR id_two = 27
ORDER BY
    CASE
        WHEN id_one=27 THEN timestamp_one
        WHEN id_two=27 THEN timestamp_two
    END DESC
登录后复制

在此更新的语句中,当 id_one 为 27 时,我们优先按 timestamp_one 排序;当 id_two 为 27 时,我们优先按 timestamp_two 排序。CASE 语句确保每行使用正确的时间戳列。

结果输出将按如下顺序排序:

-------------------------------------------------------------------
|   id_one   |   id_two   |   timestamp_one   |   timestamp_two   |
-------------------------------------------------------------------
|     27     |     35     |        9:30       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:33       |
-------------------------------------------------------------------
|     27     |     35     |        9:34       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:35       |
-------------------------------------------------------------------
登录后复制

这满足排序的要求将行视为两个时间戳列为一,对于 id_one 为 27 的行优先考虑 timestamp_one,对于 id_two 为 27 的行优先考虑 timestamp_two。

以上是如何在 MySQL 中使用 CASE 语句按特定 ID 优先级的时间戳对行进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板