MYSQL ORDER BY CASE 问题
这个问题对根据 WHERE 条件根据特定列对行进行排序提出了挑战。考虑提供的具有四行和时间戳列的数据库。目标是对行进行排序,以便两个时间戳列都被视为单个排序标准。
提供的查询最初根据 id_one 和 id_two 字段分别对时间戳进行排序:
SELECT * FROM tablename WHERE id_one=27 OR id_two=27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one END DESC, CASE WHEN id_two=27 THEN timestamp_two END DESC
这种方法会产生一个输出,其中行在每个 id_one 或 id_two 组中排序,但不是作为组合时间戳排序。
为了实现所需的排序,我们可以使用稍微修改的查询:
SELECT id_one, id_two, timestamp_one, timestamp_two FROM tablename WHERE id_one = 27 OR id_two = 27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one WHEN id_two=27 THEN timestamp_two END DESC
在这个修改后的查询中,无论哪个 ID 列与 WHERE 条件匹配,timestamp_one 和 timestamp_two 都会被考虑进行排序。 CASE 语句根据 id_one 和 id_two 值选择适当的时间戳。
此修改会产生所需的输出,其中行作为单个时间戳列排序,同时考虑 timestamp_one 和 timestamp_two:
以上是如何使用 CASE 语句在 MySQL 中基于多个时间戳列对行进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!