多表连接查询的分类
内连接(inner join)
外连接
左连接(left join)
右连接(right join)
内连接(inner join…on…)
MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录。
INNER JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后。
在使用INNER JOIN子句之前,必须指定以下条件:
首先,在FROM子句中指定主表。
其次,表中要连接的主表应该出现在INNER JOIN子句中。理论上说,可以连接多个其他表。 但是,为了获得更好的性能,应该限制要连接的表的数量(最好不要超过三个表)。
第三,连接条件或连接谓词。连接条件出现在INNER JOIN子句的ON关键字之后。连接条件是将主表中的行与其他表中的行进行匹配的规则。
格式
表1 inner join 表2 on 表1.列 = 表2.列
1
例子:
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
1
2
3
4
外连接
左连接(left join…on…)
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
格式
表1 left join 表2 on 表1.列 = 表2.列
1
例子:
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
1
2
3
4
右连接(right join…on…)
RIGHT JOIN与 LEFT JOIN相反,RIGHT JOIN关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
格式
表1 left join 表2 on 表1.列 = 表2.列
1
例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName