JOIN(内连接)和LEFT JOIN(左连接)

在 SQL 中,JOIN(内连接)和LEFT JOIN(左连接)既有联系又有区别。

一、联系

  1. 目的相同
    • 两者都是为了将两个或多个表中的数据根据特定的条件进行合并,以便从多个数据源中获取更完整的信息。
  2. 语法结构相似
    • 它们在语法上都使用ON关键字来指定连接条件。例如:SELECT * FROM table1 [JOIN/LEFT JOIN] table2 ON table1.column = table2.column;

二、区别

  1. 结果集范围不同
    • JOIN(内连接)只返回两个表中满足连接条件的行,即结果集中的每一行在两个表中都有对应的匹配行。
    • LEFT JOIN以左表为基础,返回左表中的所有行以及右表中与左表匹配的行。如果右表中没有匹配的行,则相应的列将填充为NULL
  2. 数据完整性考量不同
    • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值