gpt4 book ai didi

MYSQL ORDER BY TIMESTAMPDIFF IF 中的两列

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

我的查询排序时遇到一些问题。

所以,我需要首先显示当前时间与表中列(remind_date)之间存在差异的订单必须为(-70 - 0)ASC 如果remindDAteDIFf不在我的范围内,则按status_updated DESC排序,在其他情况下按(status_updated) DESC排序。

我写了这个查询:

SELECT TIMESTAMPDIFF(MINUTE,remind_date, NOW()) as remindDAteDIFf,
order_id, remind_date, status_id, status_updated
FROM s_order
ORDER BY IF(remindDAteDIFf BETWEEN -70 AND 0, remind_date, status_updated) DESC;

所以我得到了下一个结果 enter image description here

这很好,但我需要按 ASC 排序字段 RememberDAteDIFf 和按 DESC 排序 status_updated。 (首先需要显示remindDAteFf = -16和-28)我已经尝试过

IF(remindDAteDIFf BETWEEN -70 AND 0, remind_date ASC, status_updated DESC) 

但是我收到错误,表示查询不正确

最佳答案

我认为您需要 order by 中的三个键:

ORDER BY (remindDAteDIFf BETWEEN -70 AND 0) DESC,  -- put these first
(CASE WHEN remindDAteDIFf BETWEEN -70 AND 0 THEN remind_date END) ASC,
status_updated DESC;

第一个键将“最近”值放在第一位。第二个订单仅在 remind_date 之前订购。第三个通过 status_updated 对其余部分进行排序。

关于MYSQL ORDER BY TIMESTAMPDIFF IF 中的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824509/

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