sql >> データベース >  >> RDS >> Mysql

SQL:nullでない場合はフィールドで並べ替え、それ以外の場合は別のフィールドを使用するにはどうすればよいですか?

    COALESCEを使用できます

    ORDER BY COALESCE(dtModified, dtPosted)
    

    もう1つのオプションは、MySQL固有の関数を使用することです。 IFNULL COALESCEの代わりに 。

    MySQLでのテスト:

    CREATE TABLE table1 (dtModified DATETIME NULL, dtPosted DATETIME NOT NULL);
    INSERT INTO table1 (dtModified, dtPosted) VALUES
    ('2010-07-31 10:00:00', '2010-07-30 10:00:00'),
    (NULL                 , '2010-07-31 09:00:00'),
    ('2010-07-31 08:00:00', '2010-07-30 10:00:00');
    
    SELECT dtModified, dtPosted
    FROM table1
    ORDER BY COALESCE(dtModified, dtPosted)
    

    結果:

    dtModified           dtPosted
    2010-07-31 08:00:00  2010-07-30 10:00:00
    NULL                 2010-07-31 09:00:00
    2010-07-31 10:00:00  2010-07-30 10:00:00
    


    1. 単純なMySQLデータベース設計に関するヒントが必要

    2. Javaを使用してデータベース接続でMySQLタイムゾーンを変更するにはどうすればよいですか?

    3. OraOLEDB.Oracleプロバイダーがローカルマシンに登録されていません

    4. MySQLの強制終了プロセスはユーザーが十分なポイントを取得していないPHP