2

假设,一个选择操作给出了 3 列:col1、col2 和 col3。col2 和 col3 是时间类型。我希望结果按时间戳排序。对于每条记录,如果 col3 不为空,则时间戳等于 col3,否则为 col2。这该怎么做?

4

2 回答 2

2

使用内置函数ifnull()

select
...
order by ifnull(col3, col2)

ifnull()如果不为null,则返回第一个参数,否则返回第二个参数。

于 2012-09-21T11:30:38.703 回答
1

您可以使用子查询来做到这一点。在内部查询中,您检查 col3 是否为 NULL,然后“选择”col3 或 col2 作为“my_time”。然后,在外部查询中,您按“my_time”排序。

子查询示例:

SELECT <whatever>, IF (col3 IS NOT NULL, col3, col2) AS my_time FROM <table>

然后,外部查询:

SELECT * FROM (
    SELECT <whatever>, IF (col3 IS NOT NULL, col3, col2) AS my_time FROM <table>
) AS <temp_table> ORDER BY <temp_table>.my_time
于 2012-09-21T10:49:33.873 回答