0

テーブルがあり、特定の列を null でチェックするか、値を持っているかを確認する必要があります。
列名がorder_price.

チェックするwhere order_price is nullと、テーブルにないレコードも含まれます。
たとえばorder_id = 1、order_price が null でorder_id = 2、注文テーブルに存在しないものがあります。したがって、order_price が null かどうかを確認する where 条件の代わりに、列が null かレコードが存在しないかを知りたいのです。

このテーブルで外部結合を行っているため、別のテーブルの主キーをマップできません。オラクルを使用しています。

ありがとう

4

2 に答える 2

3

Join の代わりに、「EXISTS / NOT EXISTS」キーワードとサブクエリを使用できます。

例えば

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 に答える