2016-09-22 50 views
0

如何刪除具有所有空值的列的行?刪除多列中的空值

表例如:

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 

我想刪除CUSTID 1和5任何與在任何4個順序列的值的行應保持。

我可以在我的where語句中實現嗎?

+0

where order1 = null and order2 = null and ... – Andy

+1

這裏的實際問題是您需要規範化表格設計。 –

回答

0

你可以做這樣的事情:

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

好了,你可以隨時使用直接的方法:檢查每個方面對NULL獨立,其結果與AND總結。請記住使用IS NULL比較運算符或ISNULL()表達式;使用=的值進行比較來NULL總是產生false

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

另一種方法是使用COALESCE函數,它列表返回第一個非空值,或NULL如果沒有非空值

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

底線,雖然是你可能需要三思而後行的Customers表的結構,大概花了一些時間在重組關係訂單和客戶之間的髖關節。一種可能的解決方案是將CustomerId添加到訂單實體中。

0

在您的選擇子句中指定您的空檢查(查詢的「WHERE」部分)。

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