2016-09-22 58 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