gpt4 book ai didi

sql-server - WHERE EXISTS 和 INTERSECT 之间的 T-SQL 区别

转载 作者:行者123 更新时间:2023-12-04 00:36:51 24 4
gpt4 key购买 nike

你能告诉我这两者有什么区别吗?
我曾尝试使用两者来比较两个表,但结果有点不同:

  SELECT a.CustID FROM tbl1 AS a 
WHERE EXISTS (SELECT b.CustID FROM tbl2 b WHERE (a.CustID=b.CustID))

此查询结果 178 行。但是,下面的查询结果为 162 行。
  SELECT a.CustID FROM tbl1 AS a
INTERSECT
SELECT b.CustID FROM tbl2 AS b

最佳答案

如果您有重复的 ,以下查询将产生多行客户 ID tbl1

  SELECT a.CustID FROM tbl1 AS a 
WHERE EXISTS (SELECT b.CustID FROM tbl2 b WHERE (a.CustID=b.CustID))

如果您使用 INTERSECT,将消除重复项
  SELECT a.CustID FROM tbl1 AS a
INTERSECT
SELECT b.CustID FROM tbl2 AS b

例如。
CREATE TABLE tbl1 (CustId int, CustName varchar(100))
GO
INSERT INTO tbl1 VALUES(1 ,'N1')
GO
INSERT INTO tbl1 VALUES(2 ,'N2')
GO
INSERT INTO tbl1 VALUES(1 ,'N3')
GO
CREATE TABLE tbl2 (CustId int, CustName varchar(100))
GO
INSERT INTO tbl2 VALUES (1 ,'N1')
GO

对于上表,如果您运行
 SELECT a.CustID FROM tbl1 AS a 
WHERE EXISTS (SELECT b.CustID FROM tbl2 b WHERE (a.CustID=b.CustID))

您将获得 2 条记录。

如果你跑
   SELECT a.CustID FROM tbl1 AS a
INTERSECT
SELECT b.CustID FROM tbl2 AS b

您将获得 1 条记录。

注意:如果您使用 区别 对于查询 1,两者都会产生相同的输出。
  SELECT DISTINCT a.CustID FROM tbl1 AS a 
WHERE EXISTS (SELECT b.CustID FROM tbl2 b WHERE (a.CustID=b.CustID))

关于sql-server - WHERE EXISTS 和 INTERSECT 之间的 T-SQL 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com