3

行 order by を選択しようとしています。added_date行が更新された場合は order byupdated_dateです。

デフォルトの更新日はNullです。

上記表の(dd-mm-yy)内は日付。

以下の表では、最初の行は 2 月 2 日に追加され、2 番目の行は 2 月 1 日に追加されるため、

select * from tablename order by added_date desc;

最新の行を取得しますが、いずれかの行が更新されると、この更新された行が最新の行になります。

2 行目は、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 に答える