3

我正在尝试选择行 order byadded_date或者如果行已更新然后 order by updated_date

默认更新日期为Null

dd-mm-yy( )中给出的上表日期。

对于下表,第一行在 2 月 2 日添加,第二行在 2 月 1 日添加,因此使用 ,

select * from tablename order by added_date desc;

我得到了最新的行,但是如果更新了任何行,那么这个更新的行将成为最新的行。

对于第二行,行在 2 月 1 日添加,但在 2 月 3 日更新,因此它成为最新行。

如何获取添加和更新日期的记录?

    id   title    name   added_date   updated_date
     1   asd      rff     02-02-2013    NULL
     2   fsfs     rwr     01-02-2013    03-02-2012
     3   ddd      wwrr    30-01-2013    04-02-2013

编辑:使用 MYSQL

4

3 回答 3

4

您没有指定使用哪个 RDBMS。对于 Oracle,您可以尝试以下操作:

SELECT * FROM tablename ORDER BY NVL(updated_date,added_date) DESC;

SQL 服务器:

SELECT * FROM tablename ORDER BY ISNULL(updated_date,added_date) DESC

MySQL:

select * from tablename order by ifnull(updated_date,added_date) desc;
于 2013-02-04T05:31:44.933 回答
2

尝试使用COALESCE

SELECT  * 
FROM    tablename 
ORDER   BY COALESCE(updated_date, added_date) DESC

从文档:

返回列表中的第一个非 NULL 值,如果没有非 NULL 值,则返回 NULL。

于 2013-02-04T05:32:44.530 回答
2
ORDER BY 
    CASE updated_date 
        WHEN NULL THEN added_date 
        ELSE updated_date
         END 
    desc
于 2013-02-04T05:36:43.330 回答