从多列中删除空值

时间:2016-09-22 17:35:20

标签: mysql

如何删除包含ALL null值的行?

表示例:

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声明中实现这一点吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

嗯,您始终可以使用直接方法:分别针对NULL检查每个字段,并使用AND汇总结果。只需记住使用IS NULL比较运算符或ISNULL()表达式;使用NULL 将值与=进行比较总是产生错误

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

另一种方法是使用COALESCE函数,返回列表中的第一个非NULL值,如果没有非NULL值则返回NULL

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

但最重要的是,您可能需要考虑Customers表的结构,可能会花一些时间重新组织订单和客户之间的关系。一种可能的解决方案是将CustomerId添加到Order实体中。

答案 2 :(得分:0)

在您的选择子句中指定您的空值检查(" WHERE"您的查询的一部分)。

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