2016-09-22 3 views
0

Wie entferne ich Zeilen mit Spalten, die ALLE Nullwerte haben?Entfernen von Nullwerten aus mehreren Spalten

Tabelle Beispiel:

CustID DOB  Order1 Order2 Order3 Order4 
    1  xxx  NULL NULL NULL  NULL 
    2  xxx  25  32  27  5 
    3  xxx  NULL  6  NULL  3 
    4  xxx  1  NULL  NULL  NULL 
    5  xxx  NULL NULL  NULL  NULL 

Ich mag die Zeilen für CustID 1 und 5. Alles, was mit einem Wert in eines der 4, um Spalten löschen sollte gehalten werden.

Kann ich dies in meiner Where-Anweisung erreichen?

+0

Wo Order1 = null und order2 = null und ... – Andy

+1

Das hier eigentliche Problem ist, dass Sie Ihren Tabellenentwurf normalisieren müssen. –

Antwort

0

Man könnte so etwas tun:

DELETE FROM 
    'your_table' 
WHERE 
    'order1 IS NULL 
    AND 'order2' IS NULL 
    AND 'order3' IS NULL 
    AND 'order4' IS NULL 
    AND 'order5' IS NULL 
0

Nun, können Sie immer den direkten Weg: Überprüfen Sie jedes Feld gegen NULL einzeln, die Ergebnisse mit AND zusammenfassen. Denken Sie daran, entweder IS NULL Vergleichsoperator oder ISNULL() Ausdruck zu verwenden; Wert NULL Vergleich ergibt mit =immer falsch:

DELETE FROM Customers 
WHERE Order1 IS NULL 
    AND Order2 IS NULL... 

Eine alternative COALESCE Funktion würde, die den ersten Nicht-NULL-Wert in der Liste zurückgibt, oder NULL, wenn es keine nicht-NULL sind Werte:

DELETE FROM Customers 
WHERE COALESCE(Order1, Order2, Order3, Order4) IS NULL 

Unterm Strich ist jedoch, dass Sie zweimal über die Struktur Ihrer Customers Tisch denken, wahrscheinlich einige Zeit die Ausgaben für die Sanierung der Beziehungen müssen möglicherweise Hüfte zwischen Bestellungen und Kunden. Eine mögliche Lösung ist das Hinzufügen einer CustomerId zur Order-Entität.

0

Geben Sie in Ihrer Auswahlklausel (der "WHERE" -Teil Ihrer Abfrage) Ihre Null-Checks an.

DELETE FROM my_table 
WHERE order1 is null 
    AND order2 is null 
    AND order3 is null 
    AND order4 is null 
Verwandte Themen