SQL 四种连接查询(内连接、左连接、右连接、全连接)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
(1) JOIN: 如果表中有至少一个匹配,则返回行(inner join)
(2) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
(3) RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
(4) FULL JOIN: 只要其中一个表中存在匹配,就返回行
以下面两张数据库表为例:
"Persons" 表:
| Id_P | LastName | FirstName | Address | City | 
| 1 | Adams | John | Oxford Street | London | 
| 2 | Bush | George | Fifth Avenue | New York | 
| 3 | Carter | Thomas | Changan Street | Beijing | 
"Orders" 表:
| Id_O | OrderNo | Id_P | 
| 1 | 77895 | 3 | 
| 2 | 44678 | 3 | 
| 3 | 22456 | 1 | 
| 4 | 24562 | 1 | 
| 5 | 34764 | 65 | 
结果集:
(1) 内连接
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

(2) 左连接
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

(3) 右连接
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

(4) 全连接
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号