MySQL ORDER BY CASE 排序问题
在 MySQL 中,ORDER BY 子句允许您根据指定列对查询结果进行排序。但是,在对取决于特定条件的多个列进行排序时,您可能会遇到困难。
考虑以下场景:
您有一个包含两列的表:timestamp_one 和 timestamp_two。您需要检索 id_one 或 id_two 等于 27 的所有行。此外,您希望根据 id_one 或 id_two 是否为 27,根据 timestamp_one 或 timestamp_two 对结果进行排序。
虽然以下查询正确检索所需的行:
它按每列单独对行进行排序,而不是将它们组合成一个用于排序的单个时间戳。
要解决此问题,您可以使用以下修改后的查询:
在此修改后的查询中,我们通过使用单个 CASE 表达式来简化 ORDER BY 子句来确定排序顺序。这允许我们根据组合时间戳对行进行排序,该组合时间戳根据 id_one 和 id_two 的值动态选择适当的列(timestamp_one 或 timestamp_two)。
以上是如何在 MySQL 中根据条件时间戳对行进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!