JOIN(内连接)和LEFT JOIN(左连接)
JOIN(内连接)和LEFT JOIN(左连接)的联系与区别
·
在 SQL 中,JOIN(内连接)和LEFT JOIN(左连接)既有联系又有区别。
一、联系
- 目的相同
- 两者都是为了将两个或多个表中的数据根据特定的条件进行合并,以便从多个数据源中获取更完整的信息。
- 语法结构相似
- 它们在语法上都使用
ON关键字来指定连接条件。例如:SELECT * FROM table1 [JOIN/LEFT JOIN] table2 ON table1.column = table2.column;
- 它们在语法上都使用
二、区别
- 结果集范围不同
JOIN(内连接)只返回两个表中满足连接条件的行,即结果集中的每一行在两个表中都有对应的匹配行。LEFT JOIN以左表为基础,返回左表中的所有行以及右表中与左表匹配的行。如果右表中没有匹配的行,则相应的列将填充为NULL。
- 数据完整性考量不同
JOIN更注重数据的精确匹配,确保结果集中的数据在两个表中都存在对应关系,适合在需要严格一致性的场景下使用。LEFT JOIN则更侧重于保留左表的完整性,即使右表中没有匹配的数据,也会将左表中的行包含在结果集中,适用于需要以一个表为主要依据,同时获取与之相关的其他表信息的情况。
例如,有两个表Customers(客户表)和Orders(订单表)。
Customers表:
|
CustomerID |
CustomerName |
|
1 |
Alice |
|
2 |
Bob |
|
3 |
Carol |
Orders表:
|
OrderID |
CustomerID |
OrderAmount |
|
1 |
1 |
100 |
|
2 |
2 |
150 |
如果使用JOIN:
sql:
SELECT c.CustomerName, o.OrderAmount
FROM Customers c JOIN Orders o ON c.CustomerID = o.CustomerID;
结果为:
|
CustomerName |
OrderAmount |
|
Alice |
100 |
|
Bob |
150 |
如果使用LEFT JOIN:
sql:
SELECT c.CustomerName, o.OrderAmount
FROM Customers c LEFTJOIN Orders o ON c.CustomerID = o.CustomerID;
结果为:
|
CustomerName |
OrderAmount |
|
Alice |
100 |
|
Bob |
150 |
|
Carol |
NULL |
更多推荐


所有评论(0)