在两个表上执行左外连接语句后,我可能会收到更多的 ID。
背景:我已经从较大的数据集中缩小了两个表。以下是我在从较大的数据集中进行选择后用来获取可能的 ID 的查询。我正在尝试根据 personID 将两个数据集连接在一起。我正在执行 LEFT JOIN,因为我想保留 smallset 表中的所有数据,同时将其与缩小数据表中的数据配对。
在对较大数据集的子集运行此查询时,我收到以下 ID:
select s.personID from st.smallerset as s;
41486
41490
41493
41496
...
现在,在运行第二个查询时,我收到以下信息:
select r.* from st.secondlargedataset as r,
st.condition as h where r.personID=h.personID group by r.personID;
我收到以下查询:
41544
41577
41595
41605
...
到目前为止,一切都很好。一切都如预期的那样。但是,当我尝试加入这两个子集时运行下一个子查询时,会得到意想不到的结果。
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
此结果中包含的数据未包含在任一先前查询中。特别是 ID 41485
、41489
等41496
。我不知道为什么会出现这些 ID,因为当我将查询分解为单独的查询时,我得到了我需要的 ID。