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

SQL:UNIONを使用して、特定の選択で並べ替える方法は?

    あなたはこれをしたい:

    select * from 
    (
        SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
        UNION
        SELECT id, 1 as ordered FROM b -- returns 2,1
    )
    order by ordered
    

    更新

    2つの異なるテーブルがある場合でも、IDを結合することに気付きました。つまり、1がある場合です。 両方のテーブルで、発生するのは1つだけです。それが望ましい動作である場合は、UNIONに固執する必要があります 。そうでない場合は、UNION ALLに変更します 。

    したがって、私が提案したコードに変更すると、両方の1を取得し始めることにも気づきました。 および2 (両方のaから およびb )。その場合、提案されたコードを次のように変更することをお勧めします。

    select distinct id from 
    (
        SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
        UNION
        SELECT id, 1 as ordered FROM b -- returns 2,1
    )
    order by ordered
    


    1. クラウド内のPostgreSQLクラスターのほぼゼロのダウンタイム自動アップグレード(パートII)

    2. バグ? #1146-テーブル'xxx.xxxxx'は存在しません

    3. 3つの簡単なSQLServerパフォーマンスの勝利

    4. php.iniでoci8(Oracle)の拡張機能を有効にする方法-PHP警告:PHPスタートアップ:行0の不明