繁体   English   中英

SQL左联接查询结果行

[英]SQL Left Join Query Result Row

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

teacher.id != department.id时,每个表中的行会发生什么? 教师和部门表中的行是否仍合并到一个结果行中,除了结果行的每一列值都将具有NULL

该页面很好地解释了左右外部联接,我认为您应该看一下: http : //blog.codinghorror.com/a-visual-explanation-of-sql-joins/

要明确了解左右联接的工作方式以及它们可能产生的结果,请检查以下各项:

左联接说明。

右连接说明。

希望能帮助到你。

假设我们有2个表:

Table1

tc1
0
1
2

和表Table2

tc2
0
2
3

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

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

将返回所有行,并匹配null

tc1  tc2
0    0
1    NULL
2    2
NULL 3

请记住,这些是等效的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM