2017-05-10 11 views
0

value_twoが存在しない場合(null)、table_twoの場合、value_twoの値をtable_oneにデフォルト設定します。値が存在するテーブルから選択しますか?

I次のクエリの形式があります。

SELECT one.value_one, one.value_two, two.value_two as two_value_two 
    FROM schema.table_one one 
    LEFT JOIN schema.table_two two 
     ON one.id_value = two.id_value and two.other_column = 'other_val' 
    WHERE one.id_value = 'id_val'; 

:私は1つのオプションは、次の値のすべてを選択し、帰国後にクライアント側でそれを処理するために知っている

SELECT one.value_one, two.value_two 
    FROM schema.table_one one 
    LEFT JOIN schema.table_two two 
     ON one.id_value = two.id_value and two.other_column = 'other_val' 
    WHERE one.id_value = 'id_val'; 

two.value_twoが存在する場合は 'クリーン'ウェイチェックがあり、デフォルトではone.value_twoが選択されていますか?

答えて

2

あなたがCOALESCE機能を使用することができます。

COALESCEは、nullではない最初の引数を返します。 COALESCEは、ANSI SQL関数であり、そのようSQLのすべての実装で利用可能であることを

SELECT COALESCE(two.value_two, one.value_two) 
FROM schema.table_one one 
LEFT JOIN schema.table_two two ON one.id_value = two.id_value and two.other_column = 'other_val' 
WHERE one.id_value = 'id_val'; 

注意(MySQLの、MS SQL Serverの、...)

を:

はこのようにそれを使用します

関連する問題