我在两个临时表中读了两个excel表,#temp和#temp1 替换IN子句中的表将返回不同的resutls。我期待同样的事情。谁能解释一下?
select * from #temp where name in (select comp_name from #temp1)
返回473条记录。
select * from #temp1 where comp_name in (select name from #temp)
返回1421条记录
答案 0 :(得分:1)
temp1中具有相同comp_name的多个记录的可能性?所有这些都将匹配temp2
中的名称值答案 1 :(得分:0)
在最简单的情况下,假设#temp总共有473行,#temp1总共有1421行,两个表中的所有名称/ comp_name都是相同的值。
答案 2 :(得分:0)
肯定取决于您的数据。如果您有下面的数据,那么您将遇到类似的问题。
#temp
Name CompName
A X
A Y
A Z
#temp1
Name CompName
A X
B X
C A
在这种情况下:
select * from #temp where name in (select comp_name from #temp1)
返回3行
select * from #temp1 where comp_name in (select name from #temp)
返回1行
答案 3 :(得分:0)
如果#temp1中的comp_name
值重复,而#temp中只有一个name
:
DISTINCT做了什么?
注意:如果两个表具有相同的行数且相同的数字(如果每个值重复),则查询只能始终返回相同的数据。如果数据不同,它可能会巧合地返回相同的数字。