查询以检查记录是否存在且列为null

时间:2012-04-23 21:00:36

标签: oracle

我有一张表,我必须检查null中的特定列或具有值 可以说列名是order_price

如果我只是检查where order_price is null,那么这也包括表中没有的记录 例如,我有order_id = 1,其order_price为空,我有order_id = 2,在订单表中不存在。因此,而不是检查order_price是否为null的where条件,我想知道列是否为空或记录是否不存在。

我在这个表上进行外连接,所以我无法映射另一个表的主键。我正在使用Oracle。

由于

2 个答案:

答案 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