MySQL按多列组合排序(不是按field1 asc、field2 asc排序)
这似乎是一个典型的问题,但它是不同的 我有一个带有id和3个时间戳字段的表(简单来说)。最初,所有3个字段都是空的,并且它们被值填充。行的示例包括:MySQL按多列组合排序(不是按field1 asc、field2 asc排序),sql,mysql,sql-order-by,Sql,Mysql,Sql Order By,这似乎是一个典型的问题,但它是不同的 我有一个带有id和3个时间戳字段的表(简单来说)。最初,所有3个字段都是空的,并且它们被值填充。行的示例包括: id time1 time2 time3 1 1259625661 1259643563 null 2 null 1259621231 null 3 1259625889 null 1259644511 4 null 1259621231 null 5 null null
id time1 time2 time3
1 1259625661 1259643563 null
2 null 1259621231 null
3 1259625889 null 1259644511
4 null 1259621231 null
5 null null 1259644511
6 null 1259621231 null
7 1259625889 null null
我需要的是获得一个id列表,该列表按最近的时间戳排序(如果在time1、time2或time3中则忽略)。
按time1 desc、time2 desc、time3 desc排序会给我一个错误的列表,因为它首先对所有time1字段排序,然后对第二个字段排序,以此类推
预期结果是id的列表
这可以在MySQL中通过一个查询完成吗?感谢用户询问时,位于的版本说明可能会有用。
@jensgram
:很好的观点。我添加了COALESCE
来处理所有案例。
SELECT *
FROM mytable
ORDER BY
GREATEST(
COALESCE(time1, 0),
COALESCE(time2, 0),
COALESCE(time3, 0)
) DESC