2011-07-29 9 views
3

私は同じ主キーを持つ2つのテーブルを持っていますが、一方はもう一方よりはるかに大きいです。私はどのIDが小さいテーブルに行を持っているか知りたい。 (この例では、aが大きく、bが小さい)。今は、OUT JOINをCASEで使用して、bの値がNULLかどうかを判断しています。それは働いていない(常に1つを得る)。これを修正すると良いでしょうが、よりよい方法が必要です。私はどうすればいいのですか?外部キー列(複数可)でNULLのチェックmysql外部結合 - 結合された行が存在するかどうかを調べる

SELECT a.id, 
     CASE b.id 
     WHEN NULL THEN 0 
     ELSE 1 
     END AS exists 
FROM a LEFT OUTER JOIN b 
    ON a.id=b.id; 

答えて

6

これはあなたが示したものの同じロジックを持っていますが、短いコードがあります。

SELECT a.id,NOT ISNULL(b.id) AS exists 
FROM a LEFT OUTER JOIN b 
    ON a.id=b.id; 
3

号は、あなたがこれを行う方法を正確です。

ただし、NULL(これは値ではありません)に等しいものは何もありません。そのため、お客様のCASEELSEになります。列がNULLかどうかを調べるには、IS NULLを使用する必要があります。

CASE WHEN b.id IS NULL THEN ... 
関連する問題