gpt4 book ai didi

MySQL 按 2 个日期列排序,以较大者为准

转载 作者:行者123 更新时间:2023-11-29 10:26:32 26 4
gpt4 key购买 nike

我今天在调试一些代码时遇到了一个问题:给出以下内容MySQL数据片段:

╔════╦═════════════════════╦═════════════════════╗
║ id ║ date_created ║ date_updated ║
╠════╬═════════════════════╬═════════════════════╣
║ 1 ║ 2015-12-07 15:04:21 ║ 2016-06-06 10:59:25 ║
╠════╬═════════════════════╬═════════════════════╣
║ 2 ║ 2016-06-06 10:59:25 ║ 2016-09-09 09:44:58 ║
╠════╬═════════════════════╬═════════════════════╣
║ 3 ║ 2016-09-09 09:44:59 ║ 2017-11-30 11:36:37 ║
╠════╬═════════════════════╬═════════════════════╣
║ 4 ║ 2017-11-30 11:36:37 ║ null ║
╚════╩═════════════════════╩═════════════════════╝

我需要对这些日期进行相应的排序:

  1. 如果条目的 date_updatednull,则使用其 date_created
  2. 如果条目的 date_updated > date_created 则使用其 date_updated(尽管情况应该始终如此)
  3. 如果比较两个条目 A、B,其中 A 只有 date_created,而 B 的 date_updated 不为 null,并且这两个值相等,则 A 应该被排序大于 B。

所以我的预期结果应该是:

╔════╦═════════════════════╦═════════════════════╗
║ id ║ date_created ║ date_updated ║
╠════╬═════════════════════╬═════════════════════╣
║ 4 ║ 2017-11-30 11:36:37 ║ null ║
╠════╬═════════════════════╬═════════════════════╣
║ 3 ║ 2016-09-09 09:44:59 ║ 2017-11-30 11:36:37 ║
╠════╬═════════════════════╬═════════════════════╣
║ 2 ║ 2016-06-06 10:59:25 ║ 2016-09-09 09:44:58 ║
╠════╬═════════════════════╬═════════════════════╣
║ 1 ║ 2015-12-07 15:04:21 ║ 2016-06-06 10:59:25 ║
╚════╩═════════════════════╩═════════════════════╝

我尝试了以下查询:

SELECT * FROM table t
ORDER BY
CASE
WHEN t.date_updated IS NOT NULL AND t.date_updated > t.dated_created
THEN t.date_created
ELSE t.date_updated
END
DESC

但是,根据第 2 点,这并不能正确排序。这里正确的 MySQL 语句是什么?

最佳答案

您的案例陈述逻辑不正确。您错误地互换了 t.date_updated 和 t.date_created(检查下面 SQL 查询中的第 5 行和第 6 行)

试试这个

SELECT * FROM table t
ORDER BY
CASE
WHEN t.date_updated IS NOT NULL AND t.date_updated > t.dated_created
THEN t.date_updated
ELSE t.date_created
END
DESC

关于MySQL 按 2 个日期列排序,以较大者为准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48187037/

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