2つのテーブルで左外部結合ステートメントを実行した後、さらに多くのIDを受け取ることができます。
コンテキスト:より大きなデータセットから2つのテーブルを絞り込みました。以下は、より大きなデータセットから選択した後に可能なIDを取得するために使用したクエリです。personIDに基づいて2つのデータセットを結合しようとしています。絞り込んだデータテーブルのデータとペアリングしながら、小さいセットのテーブルにすべてのデータを保持したいので、LEFTJOINを実行しています。
より大きなデータセットのサブセットでこのクエリを実行すると、次のIDを受け取ります。
select s.personID from st.smallerset as s;
41486
41490
41493
41496
...
ここで、2番目のクエリを実行すると、次のメッセージが表示されます。
select r.* from st.secondlargedataset as r,
st.condition as h where r.personID=h.personID group by r.personID;
次のクエリを受け取ります。
41544
41577
41595
41605
...
ここまでは順調ですね。すべてが期待どおりです。ただし、これら2つのサブセットを結合しようとしてこの次のサブクエリを実行すると、予期しない結果が得られます。
select s.personID
from st.smallerset as s left join
(select r.* from st.secondlargedataset as r,
st.condition as h where r.personID=h.personID group by r.personID) as v on
s.personID=v.personID;
41485
41486
41489
41490
41493
41496
41510
41512
41513
41516
この結果には、以前のクエリに含まれていないデータが含まれています。具体的には、41485
IDなどです。クエリを個別のクエリに分割すると、必要なIDが取得されるため、これらのIDが表示される理由がわかりません。41489
41496