2012-12-21 5 views
5

Lassen Sie uns sagen, ich habe istWHERE-Anweisung mit Bedingung, wenn eine Spalte NULL

ID  | Column 1 | Column 2 
    2  |  NULL |  "a" 
    3  |  "b" | NULL 
    4  |  "c" |  "c" 

Was ich schreiben möchte, ist dies:

SELECT ID FROM table, AnotherTable 
    WHERE (Table.Column1 = AnotherTable.Column IF Table.Column1 IS NOT NULL 
    OR Table.Column2 = AnotherTable.Column IF Table.Column2 IS NOT NULL) 

EDIT: Ich bin auch das Hinzufügen der Fall, wenn Table.Column1 IS NOT NULL UND Table.Column2 IS NOT NULL THEN Table.Column2 = AnotherTable.Column

+0

Also nur 1 von 2 Spalten kann 'null' haben? Es scheint, dass Sie eine vollständige äußere Verbindung benötigen. –

Antwort

10

Sie die COALESCE() Funktion nutzen können wählen:

SELECT ID 
FROM table JOIN AnotherTable 
       ON AnotherTable.Column = COALESCE(table.Column1, table.Column2) 
+0

Was ist, wenn sowohl Column1 als auch Column2 Werte haben, aber ich möchte nur Spalte 2. – user461316

+2

@ user461316: umgekehrte Reihenfolge der Argumente? – eggyal

Verwandte Themen