gpt4 book ai didi

sql - 不包括加入的权利的代码解释?

转载 作者:行者123 更新时间:2023-11-29 12:31:05 25 4
gpt4 key购买 nike

我刚刚找到了一个很棒的页面 Venn diagrams不同的连接和执行它们的代码:
http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

我在查询中使用了“Right Excluding Join”,维恩图如下所示:

right excluding join diagram

代码如下:

SELECT subjects.subject
FROM sold_subjects
RIGHT JOIN subjects
ON sold_subjects.subject = subjects.subject
WHERE sold_subjects.subject IS NULL

我要求解释这段代码的实际作用,尤其是最后一行发生的事情。我知道我们正在加入两个具有相同主语的关系,但是当我们在最后一行将其中一个关系的主语设置为 NULL 时会发生什么情况?

最佳答案

首先,JOIN和RIGHT JOIN的作用是什么?

JOIN从两个表中获取信息并根据您在 ON 中指定的规则连接它们或 WHERE条款。

JOIN修饰符,例如 LEFT , INNER , OUTERRIGHT控制你的行为JOIN unmatched records - 当A中没有记录根据指定规则匹配B中的记录时,并且反之亦然

要理解这部分,将表 A 视为左表,将表 B 视为右表。当您有多个联接时,每个联接中的右表是其名称紧邻 JOIN 的表。命令。

例如 FROM a1 LEFT JOIN ... LEFT JOIN b

b表格是右边的,前面的是左边的。

这是修饰符行为的总结:

  • LEFT : 保留左表不匹配的记录,丢弃右表的记录;
  • RIGHT : 保留右表中不匹配的记录,丢弃左表中的记录;
  • INNER : 只保留匹配的记录,丢弃两个表中不匹配的记录;
  • OUTERFULL : 保留所有记录,无论是否匹配。

视觉上发生了什么?

假设您有两个简单的表,它们的名称与您放入其中的表的名称相同。

sold_subjects               subjects
subject subject
1 1
2 4
3 5
4 6

当你RIGHT JOIN两个表,您创建第三个表,如下所示:

joined_table
sold_subjects.subject subjects.subject
1 1
4 4
NULL 5
NULL 6

请注意主题23在这个子集中已经消失了。

当你添加 WHERE子句 sold_subjects.subject IS NULL ,您只保留了最后两行,其中主题不匹配

关于sql - 不包括加入的权利的代码解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543284/

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