首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >INTERSECT和INNER JOIN之间有根本的区别吗?

INTERSECT和INNER JOIN之间有根本的区别吗?
EN

Stack Overflow用户
提问于 2018-08-10 05:02:46
回答 2查看 24.3K关注 0票数 18

据我所知,内部连接是针对引用的键进行的,而INTERSECT不是。但在某些情况下,afaik和afaik可以做同样的事情。那么,以下两个表达式(在性能或其他方面)是否存在差异?如果有,哪一个更好?

表达式1:

代码语言:javascript
运行
复制
SELECT id FROM customers 
INNER JOIN orders ON customers.id = orders.customerID;

表达式2:

代码语言:javascript
运行
复制
SELECT id FROM customers
INTERSECT
SELECT customerID FROM orders
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-10 05:04:47

它们非常不同,即使在您的情况下也是如此。

如果id在任一表中重复,则INNER JOIN将返回重复项。INTERSECT删除重复项。INNER JOIN永远不会返回NULL,但INTERSECT将返回NULL

这两个是非常不同的;一个是运算符,它通常匹配有限的一组列,并且可以在任一表中返回零行或多行。另一个是基于集合的运算符,它比较两个集合之间的完整行,并且永远不会返回比较小的表中更多的行。

票数 36
EN

Stack Overflow用户

发布于 2018-08-10 05:06:43

例如,尝试执行以下操作:

代码语言:javascript
运行
复制
CREATE TABLE #a (id INT)

CREATE TABLE #b (id INT)

INSERT INTO #a VALUES (1), (NULL), (2)
INSERT INTO #b VALUES (1), (NULL), (3), (1)

SELECT a.id FROM #a a
INNER JOIN #b b ON a.id = b.id

SELECT id FROM #a
INTERSECT
SELECT id FROM #b
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51775718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档