首页 > 解决方案 > 在 MySQL 中按多个时间戳排序

问题描述

所以我有这张表我想从中选择。基本结构是:

我想根据哪个时间戳等于前端选择的日期来选择和排序时间戳。

例如:

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.

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

谢谢!

标签: mysql

解决方案


如果您不关心多个列/时间戳与 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

推荐阅读