如何删除包含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声明中实现这一点吗?
答案 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