gpt4 book ai didi

mysql - SQL Left Join 查询结果行

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:06 26 4
gpt4 key购买 nike

当您对两个表执行左连接时,假设教师和部门 ON teacher.id = department.id。左连接会将左表(教师)中的每条记录与右表(部门)中的每条记录进行比较,如果 teacher.id = department.id,则将记录连接到结果行中。

teacher.id != department.id 时,每个表中的行会发生什么情况?除了结果行的每一列值的值为 NULL 之外,teacher 和 department 表中的行是否仍然连接到一个结果行中?

最佳答案

假设我们有 2 个表:

表 1

tc1
0
1
2

Table2

tc2
0
2
3

这将是对这 2 个表的各种查询的结果

SELECT tc1, tc2 FROM table1, table2 WHERE tc1=tc2

结果:

tc1  tc2
0 0
2 2

这与此查询相同:

SELECT tc1, tc2 FROM table1 INNER JOIN table2 ON tc1=tc2

它基本上只返回 tc1=tc2 的行。简单的。现在外连接的行为不同了。它们包括一个表中的所有行。
LEFT 表示它将包含您已有的集合中的所有行,即使它们与联接表中的任何内容都不匹配。
RIGHT 表示它将包含连接表中的所有行,即使它们与您已有的行中的任何内容都不匹配。
FULL 将返回两侧的所有行。

当在一侧未找到匹配项时,值将返回为 NULL

SELECT tc1, tc2 FROM table1 LEFT JOIN table2 ON tc1=tc2

结果将是:

tc1  tc2
0 0
1 NULL
2 2

现在,右连接

SELECT tc1, tc2 FROM table1 RIGHT JOIN table2 ON tc1=tc2

会回来

tc1  tc2
0 0
2 2
NULL 3

现在,全外连接

SELECT tc1, tc2 FROM table1 FULL OUTER JOIN table2 ON tc1=tc2

将返回所有行,匹配空值

tc1  tc2
0 0
1 NULL
2 2
NULL 3

请记住,这些是等价的:

INNER JOIN        <=>  JOIN
LEFT OUTER JOIN <=> LEFT JOIN
RIGHT OUTER JOIN <=> RIGHT JOIN

关于mysql - SQL Left Join 查询结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561867/

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