链接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定链接条件。WHERE和HAVING子句也能够包含搜索条件,以进一步筛选链接条件所选的行。 web
链接可分为如下几类: 数据库
内连接(Inner Join)spa
外链接(Outer Join).net
|--- 左链接(Left Join)
|--- 右链接(Right Join)
code
全链接(Full Join)orm
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法 blog
?ci
1
2
3
4
|
SELECT
column_name(s)
FROM
table_name1
INNER
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name
|
注释:INNER JOIN 与 JOIN 是相同的。 get
一句话归纳:inner join只取都不null的,至关于用from a,b where ?=?(链接是on ? = ?)it
示例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Adams |
John |
24562 |
Carter |
Thomas |
44678 |
根据目的表(但愿获取其所有记录的表)是右表仍是左表,分为左链接和右链接。
LEFT JOIN
LEFT JOIN 关键字会从左表 (table_name1) 那里返回全部的行,即便在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
1
2
3
4
|
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
|
注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
一句话归纳:以左表为标准,取出左表全部的记录,右表有对应记录则显示,无则显示null。
示例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Carter |
Thomas |
77895 |
Bush |
George |
RIGHT JOIN
RIGHT JOIN 关键字会右表 (table_name2) 那里返回全部的行,即便在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
1
2
3
4
|
SELECT
column_name(s)
FROM
table_name1
RIGHT
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name
|
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
一句话归纳:以右表为标准,取出右表全部的记录,左表有对应记录则显示,无则显示null。
示例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Carter |
Thomas |
77895 |
34764 |
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 关键字语法
1
2
3
4
|
SELECT
column_name(s)
FROM
table_name1
FULL
JOIN
table_name2
ON
table_name1.column_name=table_name2.column_name
|
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
一句话归纳:完整外部链接返回左表和右表中的全部行。是左链接和右链接的合集。
示例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
LastName |
FirstName |
OrderNo |
Adams |
John |
22456 |
Bush |
George |
|
34764 |
PS:
交叉链接:交叉链接返回左表中的全部行,左表中的每一行与右表中的全部行组合。交叉链接也称做笛卡尔积。