2017-05-10 2 views
0

Wenn ein Wert, value_two nicht existiert (oder null) in table_two Ich möchte standardmäßig auf den Wert value_two in table_one.Wählen Sie aus der Tabelle wo Wert existiert?

Ich habe die folgende Abfrage-Format:

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'; 

Ich kenne eine Option alle der Werte zu wählen ist und es auf der Clientseite Griff nach der Rückkehr der folgende:

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'; 

Gibt es eine 'saubere' Möglichkeit zu prüfen, ob two.value_two existiert und Standard, um one.value_two zu wählen, wenn nicht?

Antwort

2

können Sie die COALESCE-Funktion verwenden.

COALESCE gibt das erste Argument zurück, das nicht null ist.

es wie folgt verwendet:

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'; 

Beachten Sie, dass COALESCE eine ANSI-SQL-Funktion ist und als solche in allen Implementierungen von SQL (MySQL, MS SQL Server, ...)

verfügbar ist
Verwandte Themen