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

Oracle:データが見つからない場合でも、常に1行だけを返すクエリを取得します

    これをよりシンプルでクリーンにする方法はありますが、これは基本的にテクニックを詳しく説明しています:

    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
    
    UNION ALL
    
    SELECT NULL AS data_name
    FROM dual
    WHERE NOT EXISTS (
        SELECT data_name
        FROM data_table
        WHERE data_table.type = v_t_id
    )
    

    ユニオンの最初の部分が空の場合、2番目の部分には行が含まれ、最初の部分が空でない場合、2番目の部分には行が含まれません。

    クエリに時間がかかる場合は、次のクエリを使用してください:

    SELECT * FROM (  
        SELECT data_name
        FROM data_table
        WHERE data_table.type = v_t_id
    
        UNION ALL
    
        SELECT NULL AS data_name
        FROM dual
      ) WHERE data_name is not null or ROWNUM = 1
    


    1. Oracle Query:カンマ区切りの値を持つ異なるテーブルの2つの列を比較する方法

    2. Neo4j-Cypherを使用して制約を削除する

    3. MySQLの更新/ステートメントの挿入を高速化

    4. SQLServerはSelect...Insertクエリを暗黙のトランザクションにラップしますか?