2013-02-04 28 views
3

我想按added_date選擇一個行順序,或者如果行已更新,則按updated_date排序。用於選擇具有added_date和updated_date的行的SQL

默認更新日期爲Null

對於(dd-mm-yy)中給出的上表日期。

對於下表中的第一行,在2月2日加入和第二,在2月1日加入這樣使用,

select * from tablename order by added_date desc; 

我得到的最新行,但是如果任何行,然後更新了這個更新的行成爲最新一排。

對於第二行,第一行添加了行,但它在第三位更新,因此它變爲最新行。

如何獲取添加和更新日期的記錄?

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

+0

@marc_s:使用Mysql,但只需查詢即可獲取記錄 – Kango

回答

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; 
2

嘗試使用COALESCE

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

從文檔:

如果沒有非NULL值返回列表中的第一個非NULL值,或NULL。

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