SQL选择具有added_date和updated_date的行

时间:2013-02-04 05:16:31

标签: mysql sql

我正在尝试按added_date选择行顺序,或者如果行已更新,则按updated_date排序。

默认更新日期为Null

对于(dd-mm-yy)中给出的上述表格日期。

对于下表,第一行以2 feb添加,第二行以1 feb添加,因此使用,

select * from tablename order by added_date desc;

我获取了最新的行,但如果更新了任何行,则此更新的行将成为最新的行。

对于第二行,在第1个feb添加了行,但它在第3个feb更新,因此它成为最新行。

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

    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

3 个答案:

答案 0 :(得分:4)

您没有指定您使用的RDBMS。对于Oracle,您可以尝试:

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

SQL Server:

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

MySQL:

select * from tablename order by ifnull(updated_date,added_date) desc;

答案 1 :(得分:2)

尝试使用COALESCE

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

来自文档:

  

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

答案 2 :(得分:2)

ORDER BY 
    CASE updated_date 
        WHEN NULL THEN added_date 
        ELSE updated_date
         END 
    desc