IN句に副問合わせを使う場合と使わない場合
お世話になります。
SQLについての質問です。
RDBMSはSymfowareです。
IN句に副問い合わせを指定するSQLと
その副問い合わせの結果を直接IN句に記載したSQLで
結果が異なってしまいます。
こういうことってありますでしょうか。
以下のようなSQLです。
(1)
SELECT
*
FROM
T1
WHERE
T1.column_A IN (
SELECT T2.column_A FROM T2 WHERE T2.column_B='XXXX'
)
上記IN句内のSELECT文の結果は、'A'、'B'、'C'、'D'です。
(2)
SELECT
*
FROM
T1
WHERE
T1.column_A IN ('A','B','C','D')
この(1)、(2)のSQLの結果が異なってしまいます。
私の環境では(1)では0件、(2)では2件ヒットします。
なぜこのようになるのかわかる方がいらっしゃいましたら
ご教授ください。
ちなみに、DBを操作して、副問い合わせのSELECT文の結果を
'A'、'B'とすると同じ結果が得られます。
副問い合わせのSELECT文の結果が3件以上になると(1)のSQLの
結果は0件になってしまいます。
RDBMSの障害でしょうか・・・?
それとも、IN句に副問い合わせを使用する場合、
その副問い合わせの結果は2件以下にする必要がある
なんてルールがあったりするのでしょうか。
お礼
xs200さん、ありがとうございます。 「みずすみて よもにせきある かいのくに」 だったのですね! ちょっとなまりのある方のお声だったため、 「よも」→「よご」「のくに」→「どくじ」 と聞こえておりました。 ヒットしないわけですね。 お恥ずかしい限りです。 本当に助かりました。ありがとうございました。