Lio*_*ing 1602 mysql sql join inner-join outer-join
什么之间的区别INNER JOIN
,LEFT JOIN
,RIGHT JOIN
并FULL JOIN
在MySQL的?
Pra*_*ana 3133
阅读有关代码项目的原始文章将对您有所帮助:SQL连接的可视化表示.
另请查看这篇文章:SQL SERVER - 更好的性能 - LEFT JOIN还是NOT IN?.
找到原始的:MySQL中的JOIN和OUTER JOIN之间的区别.
Bri*_*ing 685
INNER JOIN根据外键获取两个表之间通用的所有记录
LEFT JOIN获取LEFT链接表中的所有记录,但如果您从RIGHT表中选择了一些列,如果没有相关记录,则这些列将包含NULL
RIGHT JOIN与上面类似,但获取RIGHT表中的所有记录
FULL JOIN从两个表中获取所有记录,并将NULL放在相对表中不存在相关记录的列中
Aru*_*K V 656
SQL JOIN子句用于根据它们之间的公共字段组合来自两个或多个表的行.
SQL中有不同类型的连接:
INNER JOIN:当两个表中都匹配时返回行.
LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项也是如此.
RIGHT JOIN:返回右表中的所有行,即使左表中没有匹配项也是如此.
FULL JOIN:它结合了左外连接和右外连接的结果.
连接表将包含两个表中的所有记录,并填写任何一侧缺少匹配项的NULL.
SELF JOIN:用于将表连接到自身,就像表是两个表一样,在SQL语句中临时重命名至少一个表.
CARTESIAN JOIN:返回两个或多个连接表中记录集的笛卡尔积.
我们可以在详细信息中采用前四个连接:
我们有两个具有以下值的表.
表A
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
Run Code Online (Sandbox Code Playgroud)
表B
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
Run Code Online (Sandbox Code Playgroud)
.................................................. ..................
内部联接
注意:它给出了两个表的交集,即它们在TableA和TableB中共有的行
句法
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Run Code Online (Sandbox Code Playgroud)
将其应用于我们的样本表中:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Run Code Online (Sandbox Code Playgroud)
结果将是
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
Run Code Online (Sandbox Code Playgroud)
LEFT JOIN
注意:将给出TableA中的所有选定行,以及TableB中任何常见的选定行.
句法
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Run Code Online (Sandbox Code Playgroud)
将其应用于我们的样本表中:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Run Code Online (Sandbox Code Playgroud)
结果
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
Run Code Online (Sandbox Code Playgroud)
正确的加入
注意:将给出TableB中的所有选定行,以及TableA中任何常见的选定行.
句法
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Run Code Online (Sandbox Code Playgroud)
将其应用于我们的样本表中:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Run Code Online (Sandbox Code Playgroud)
结果
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
Run Code Online (Sandbox Code Playgroud)
完全加入
注意:它将返回两个表中的所有选定值.
句法
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Run Code Online (Sandbox Code Playgroud)
将其应用于我们的样本表中:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Run Code Online (Sandbox Code Playgroud)
结果
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Run Code Online (Sandbox Code Playgroud)
趣味事实
对于INNER加入,订单无关紧要
对于(LEFT,RIGHT或FULL)OUTER连接,顺序很重要
最好去看看这个链接它会给你有关加入订单的有趣细节
归档时间: |
|
查看次数: |
1361670 次 |
最近记录: |