1

さて、ここに行きます:

ID(重複することはできますがNULLはできません)と値(重複することはできますがNULL)を持つテーブルがあります

id      value
-----   -----
1       red
1       red
1       (null)
2       blue
2       blue
3       (null)

では、値を持つすべてのレコードの ID と値を返す方法はありますが、null 値も見つかった場合は結果セットに含めないでください。

したがって、リターンは次のようになります

id      value
-----   -----
2       blue

ID 1 と 3 の値が 1 つ以上の結果で (null) であるため

4

2 に答える 2

2

これは典型的な「存在しない場所を選択する」タイプのクエリであり、回答を記述する方法は多数あります。次に例を示します。

LEFT JOIN / WHERE ... IS NULL の使用:

SELECT DISTINCT T1.id, T1.value
FROM your_table T1
LEFT JOIN your_table T2
ON T1.id = T2.id AND T2.value IS NULL
WHERE T2.id IS NULL

NOT IN の使用:

SELECT DISTINCT id, value
FROM your_table
WHERE id NOT IN
(
    SELECT DISTINCT id
    FROM your_table
    WHERE value IS NULL
)

NOT EXISTS の使用:

SELECT DISTINCT id, value
FROM your_table
WHERE NOT EXISTS
(
    SELECT NULL
    FROM your_table T1
    WHERE your_table.id = T1.id AND T1.value IS NULL
)
于 2010-08-05T14:54:21.100 に答える
1
select t1.id, t1.value
from MyTable t1
left outer join MyTable t2 on t1.id = t2.id and t2.value is null
where t2.id is null
group by t1.id, t1.value
于 2010-08-05T14:55:15.827 に答える