left join、right join、inner join、full join

left join、right join、inner join、full join
最新回答
认真的老去

2022-04-13 18:44:08

在SQL中,四种主要的连接查询方法包括inner join(内连接)、left join(左连接)、right join(右连接)和full join(全连接)。它们的实质区别在于返回结果的完整程度,而非查询过程本身。

内连接(INNER JOIN)只返回两个表中完全匹配的记录。以两张关联的表为例,Orders通过Id_P字段与Persons相连。执行如下的内连接查询:

sql
SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
INNER JOIN Orders o
ON p.Id_P = o.Id_P
ORDER BY p.LastName
结果集只包含在两个表中都有匹配的记录。

左连接(LEFT JOIN)则保留左表(Persons)的所有行,即使在右表(Orders)中没有匹配的记录。例如:

sql
SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
LEFT JOIN Orders o
ON p.Id_P = o.Id_P
ORDER BY p.LastName
即使Bush的记录在Orders中无匹配,这个行仍然会被保留。

右连接(RIGHT JOIN)则与左连接相反,保留右表的所有行:

sql
SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
RIGHT JOIN Orders o
ON p.Id_P = o.Id_P
ORDER BY p.LastName
即使Orders表的Id_P为65的记录在Persons中无对应,它仍会出现在结果中。

全连接(FULL JOIN)则同时返回左表和右表中没有匹配的所有记录,是前两种连接方式的并集:

sql
SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
FULL JOIN Orders o
ON p.Id_P = o.Id_P
ORDER BY p.LastName
以上就是left join、right join、inner join和full join之间的主要区别,它们只是根据需要选择哪种方式来展示数据的完整程度。