mysql中的按多个时间戳排序

koaltpgm  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(322)

所以我有一张table要选。基本结构是:
身份证件
时间戳1
时间戳2
时间戳3(将来可能会有更多的时间戳)
我想选择和秩序的时间戳的基础上,其中一个是相等的日期是在前端选择。
例如:

SELECT Id FROM table WHERE DATE(Timestamp1) = 'datevariable'
OR DATE(Timestamp2) = 'datevariable' OR DATE(Timestamp3) = 'datevariable'  
ORDER BY Timestamp1 (if it == 'datevariable'), Timestamp2 (if it == 'datevariable'), etc.

任何帮助都将不胜感激。如果可能的话,我想把它保留在查询中,而不是在查询后再做(尽管这可能是我必须做的)。
谢谢!

zzlelutf

zzlelutf1#

如果您不关心多个列/时间戳与where条件匹配的情况,则应使用以下查询:

SELECT Id
FROM table
WHERE DATE(Timestamp1) = 'datevariable'
   OR DATE(Timestamp2) = 'datevariable'
   OR DATE(Timestamp3) = 'datevariable'
ORDER BY 
    CASE 'datevariable'
        WHEN DATE(Timestamp1) THEN Timestamp1
        WHEN DATE(Timestamp2) THEN Timestamp2
        WHEN DATE(Timestamp3) THEN Timestamp3
    END

根据你的评论:“我很可能会让后一个时间戳取代前一个。”—你可能想颠倒顺序

CASE 'datevariable'
        WHEN DATE(Timestamp3) THEN Timestamp3
        WHEN DATE(Timestamp2) THEN Timestamp2
        WHEN DATE(Timestamp1) THEN Timestamp1
    END

相关问题