左外连接/返回左表所有内容和条件满足的左右表

博客提及表的left join操作,left join是数据库中常用的连接方式,可用于从多个表中获取相关数据,在数据处理和分析中较为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
表1 left join 表2 on…

### MySQL 中的不同类型联查询 #### 内连接 (INNER JOIN) 内连接返回两个满足连接条件记录。这意味着只有当左侧右侧中的键字段匹配时,才会显示相的行。 ```sql SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID; ``` 此语句会列出所有订单及其对的客户名称,但不会列出没有任何订单的客户[^1]。 #### 外连接 (OUTER JOIN) 外连接可以进一步细分为外连接、右外连接以及全外连接(某些数据库不支持)。这些操作符允许保留一侧或两侧未找到匹配项的数据。 ##### 外连接 (LEFT OUTER JOIN 或 LEFT JOIN) 即使右边中不存在对关系,也会返回的所有记录;对于那些找不到配对的情况,在结果集中填充NULL值。 ```sql SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY Customers.CustomerName; ``` 这段SQL代码展示了所有的顾客名单,并附上他们下的订单编号。如果某个顾客从未下过单,则其OrderID列为空。 ##### 右外连接 (RIGHT OUTER JOIN 或 RIGHT JOIN) 与外连接相反,它总是返回右边里的全部数据集,而不管边是否有相匹配的信息存在。 ```sql SELECT Orders.OrderID, Employees.EmployeeLastName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID WHERE Orders.OrderDate IS NULL OR Orders.OrderDate >= '2023-01-01'; ``` 这里选取了自定义日期之后的所有订单及相关员工姓氏。如果没有关联到任何有效订单的话,那么Orders部分将会被置为null。 ##### 全外连接 (FULL OUTER JOIN) 这种类型的连接并不常见于标准SQL语法里,因为它不是所有RDBMS都原生支持的功能之一。不过概念上讲就是把左右两边都不遗漏地展示出来——即无论哪边有无对方参照物都会呈现整条记录下来。 由于MySQL本身并没有直接提供`FULL OUTER JOIN`的支持,可以通过组合使用UNION来模拟这一行为: ```sql (SELECT c.customer_name, o.order_id FROM customers AS c LEFT JOIN orders AS o USING(customer_id)) UNION ALL (SELECT c.customer_name, o.order_id FROM customers AS c RIGHT JOIN orders AS o USING(customer_id)); ``` 这将给出一张包含所有客户的列,无论是下单还是没下过的,同时也涵盖了所有已知订单详情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值