gpt4 book ai didi

sql - INNER JOIN 和 LEFT SEMI JOIN 的区别

转载 作者:行者123 更新时间:2023-12-03 05:28:18 33 4
gpt4 key购买 nike

INNER JOINLEFT SEMI JOIN 之间有什么区别?

在下面的场景中,为什么我会得到两个不同的结果?

INNER JOIN 结果集要大得多。有人可以解释一下吗?我正在尝试获取 table_1 中仅出现在 table_2 中的名称。

SELECT name
FROM table_1 a
INNER JOIN table_2 b ON a.name=b.name

SELECT name
FROM table_1 a
LEFT SEMI JOIN table_2 b ON (a.name=b.name)

最佳答案

INNER JOIN 可以从两个表的列中返回数据,并且可以在任一侧具有多个匹配的重复记录值。 LEFT SEMI JOIN 只能返回左侧表中的列,并从左侧表中生成一条记录,其中右侧表中存在一个或多个匹配项(无论匹配的数量)。它相当于(在标准 SQL 中):

SELECT name
FROM table_1 a
WHERE EXISTS(
SELECT * FROM table_2 b WHERE (a.name=b.name))

如果右侧列中有多个匹配行,INNER JOIN 将为右表中的每个匹配返回一行,而 LEFT SEMI JOIN 仅返回左表中的行,而不管右侧的匹配行数。这就是您在结果中看到不同行数的原因。

I am trying to get the names within table_1 that only appear in table_2.

那么 LEFT SEMI JOIN 就是要使用的适当查询。

关于sql - INNER JOIN 和 LEFT SEMI JOIN 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738784/

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