我正在尝试运行查询,但不确定为什么返回的记录集偏离60行。
Select t1.* into #temp1
from NameExt as t1
join #temp1 as t2
on t1.AN = t2.AN --164172
Select t1.* into #temp3
from NameExt as t1
where AN in (Select AN from #temp1) --164112
当我与#temp1和#temp2进行相交或除相交时,我没有返回任何行。
真的需要了解为什么两个查询返回的记录集都不相似。
即使返回的行数与第二次查询相同
Select * into #temp3 from NameExt as t1 where exists
( Select 1 from #temp1 as t2 where t1.AN = t2.AN) --164112
非常感谢
答案 0 :(得分:0)
您的查询不正确。您不能同时选择并创建一个临时表。
选择t1。*到#temp1 从NameExt作为t1 以t2身份加入#temp1 在t1.AN = t2.AN --164172
答案 1 :(得分:0)
根据评论,您可能在#temp1
中有多行,而在AN
中有相同的值...
CREATE TABLE x (
id INT
)
CREATE TABLE y (
id INT,
x_id INT
)
INSERT INTO x VALUES (1), (2), (3)
INSERT INTO y VALUES (1, 2), (2, 2), (3, 3)
SELECT *
FROM x INNER JOIN y ON x.id = y.x_id
-- a total of three rows
-- x.id | y.id | y.x_id
------------------------
-- 2 | 1 | 2
-- 2 | 2 | 2
-- 3 | 3 | 3
SELECT *
FROM x
WHERE x.id IN (SELECT y.x_id FROM y)
-- a total of two rows
-- x.id
--------
-- 2
-- 3
答案 2 :(得分:0)
您可以通过执行以下操作轻松查看哪些值导致了问题:
select t2.AN
from #temp1 t2
group by t2.AN
having count(*) > 1;
第二张表中的重复项导致了此问题。你知道如何解决它。 。 。使用in
或exists
。