0

我有一个表,我必须检查一个特定的列是否为空或有值。
假设列名是order_price.

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

我在这个表上做外连接,所以我不能映射另一个表的主键。我正在使用甲骨文。

谢谢

4

2 回答 2

3

您可以使用“EXISTS / NOT EXISTS”关键字和子查询来代替 Join 。

例如

SELECT parent.* 
FROM parent 
WHERE EXISTS (SELECT 1 
              FROM child 
              WHERE child.id_parent = parent.id AND child.somecolumn IS NULL)

您可以根据您是否希望谓词匹配来使用“存在/不存在”。

于 2012-04-23T21:10:32.347 回答
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
于 2012-04-24T10:51:36.060 回答