次のクエリがあります。
SELECT count(*)
FROM User u
INNER JOIN NAME n
ON u.UserId = n.UserId
AND n.last = 'Joe';
--returns 1943
SELECT count(*)
FROM User u
WHERE u.UserId IN (
SELECT n.UserId
FROM NAME n
WHERE n.last = 'Joe'
);
--returns 1875
UserId はテーブル User の主キーであり、テーブル Name の外部キーです (一意ではありません)。
結合クエリは、ネストされた選択クエリよりも多くの行を返すのはなぜですか? それらは同じであるべきではありませんか?
ありがとう。