我有一张表,我必须检查null中的特定列或具有值
可以说列名是order_price
。
如果我只是检查where order_price is null
,那么这也包括表中没有的记录
例如,我有order_id = 1
,其order_price为空,我有order_id = 2
,在订单表中不存在。因此,而不是检查order_price是否为null的where条件,我想知道列是否为空或记录是否不存在。
我在这个表上进行外连接,所以我无法映射另一个表的主键。我正在使用Oracle。
由于
答案 0 :(得分:3)
您可以使用“EXISTS / NOT EXISTS”关键字和子查询代替Join。
e.g。
SELECT parent.*
FROM parent
WHERE EXISTS (SELECT 1
FROM child
WHERE child.id_parent = parent.id AND child.somecolumn IS NULL)
您可以使用“存在/不存在”,具体取决于您是否希望谓词匹配。
答案 1 :(得分:3)
SELECT o.*,
od.order_price,
CASE
WHEN od.order_id IS NULL THEN
'Not exists'
WHEN od.order_price IS NULL THEN
'Exists, IS NULL'
ELSE
'Exists, IS NOT NULL'
END AS nullness
FROM orders o
LEFT JOIN
order_data od
ON od.order_id = o.id