mysql - 在 MySQL 中按多个时间戳排序
问题描述
所以我有这张表我想从中选择。基本结构是:
- ID
- 时间戳1
- 时间戳2
- Timestamp3(未来可能会有更多的时间戳)
我想根据哪个时间戳等于前端选择的日期来选择和排序时间戳。
例如:
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.
任何帮助将不胜感激。如果可能的话,我想将其保留在查询中,而不是在查询后进行(尽管这可能是我必须做的)。
谢谢!
解决方案
如果您不关心多个列/时间戳与 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
推荐阅读
- c# - 比较它们的 int id 属性时如何强制执行类类型
- python - flask run 不起作用,但 python server.py 可以!环境变量集
- oracle - 在 JSON LIST PLSQL 中解析 JSON LIST
- linux - 为 mp3/wav 编译自定义 FFMPEG 到 flac 转换
- powershell - 将 Powershell 命令转换为 CMD
- amazon-web-services - ECS / Fargate 不时在凌晨 12 点无故取消注册目标组中的容器
- kubernetes - 从 docker 私有存储库中提取 K8s 问题
- mysql - 在select knex js中计数
- powershell - 具有多态性和单例模式的 PowerShell 类
- sql - SQL group by 带来了很多重复项