gpt4 book ai didi

mysql - 如何使用 case 语句对数据进行排序 - 使用 MySQL?

转载 作者:行者123 更新时间:2023-11-30 23:17:12 30 4
gpt4 key购买 nike

我有一个查询,但我想按如下顺序排列数据:

  1. status(所以我在顶部有 status = 1,在底部有 status 2 的记录)

  2. 如果记录有 status = 1 则按以下顺序排列它们
    a) CASE WHEN i.assigned_to = '.USER_ID.'然后 0 其他 1 结束
    b) CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) THEN 0 ELSE 1 END
    c)i.priority DESC
    d) i.created_on ASC

  3. 如果记录有 status = 2,则按 completed_on DESC

  4. 对记录进行排序

这是我目前的语法,但我不知道如何拆分订单

ORDER BY
i.status ASC,
CASE WHEN i.assigned_to = '.USER_ID.' THEN 0 ELSE 1 END,
CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) THEN 0 ELSE 1 END,
i.priority DESC,
i.created_on ASC

我的查询当前对所有记录排序a) CASE WHEN i.assigned_to = '.USER_ID.'然后 0 其他 1 结束b) (CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) THEN 0 ELSE 1 END)c)i.priority DESCd)i.created_on ASC

我希望它仅在 status = 1 时按那些排序,否则按 completed_on DESC 排序

最佳答案

尝试:

ORDER BY
i.status ASC,
CASE WHEN i.assigned_to = '.USER_ID.' and i.status = 1 THEN 0 ELSE 1 END,
CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) and i.status = 1
THEN 0 ELSE 1 END,
CASE WHEN i.status = 1 THEN i.priority END DESC,
CASE WHEN i.status = 1 THEN i.created_on END ASC,
CASE WHEN i.status = 2 THEN i.completed_on END DESC

关于mysql - 如何使用 case 语句对数据进行排序 - 使用 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115801/

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