right join

right join 关键字会返回右表 (table_name2) 那里所有的行,即使在左表 (table_name1) 中没有匹配的行。

select p.Persons.LastName, p.FirstName, o.OrderNo
FROM Persons p
RIGHT JOIN Orders o
ON p.Id_P=0.Id_P
ORDER BY p.LastName;

 结果集:

在SQL中,`RIGHT JOIN`用于返回右表(`right table`)中的所有记录,而不仅仅是两个表中有匹配项的部分。它还会包括左表(`left table`)中存在的对应数据;如果没有找到相应的匹配,则结果集中来自左表的那一侧列将会填充NULL值。 简单来说,如果你有两张表格A和B,并且使用了`A RIGHT JOIN B ...`这样的语句形式,那么查询最终会给出所有的B表条目加上它们对应的A表条目的信息——即便有些B表的行没有任何与之配对的A表的数据。 下面是一个简单的例子来说明如何运用`RIGHT JOIN`: ### 场景描述 假设我们有一个名为“orders”的订单表,还有一个叫作“customers”的客户表。“orders”表里存储着每一个订单的具体详情以及所关联客户的ID,“customers”则保存有关每位顾客的基本个人信息。 我们的目标是从这两个表里面提取出全部的顾客信息,不管他们是否下过单,同时也把那些已经下单但又确实存在的用户连同其购买记录一起展示出来。 #### 表格结构示意: - customers (customer_id, customer_name) - orders(order_id, order_date, customer_id) #### 使用 `RIGHT JOIN` 的 SQL 查询语句: ```sql SELECT c.customer_id, c.customer_name, o.order_id, o.order_date FROM customers c RIGHT JOIN orders o ON c.customer_id = o.customer_id; ``` 在这个例子中,因为我们在从`customers`向`orders`做右连接,所以即使有的订单没有对应的顾客(这理论上不应该发生,但在实际应用中可能遇到数据异常),该部分订单仍然会被显示出来,只是缺少相关的顾客信息而已。然而,按照常规业务逻辑设计的话,几乎不会单独去用`RIGHT JOIN`, 更常见的做法是以`LEFT JOIN`为主来进行反方向的操作以达到同样的效果。 实际上,许多开发者更偏好于总是将较大的、核心的一方放在左边作为基础表进行`LEFT JOIN`,因为它更容易理解和维护。因此,在实践中很少直接见到有人使用`RIGHT JOIN`。不过了解它是很重要的,因为在某些特定场景下或是在分析别人的复杂SQL脚本时可能会碰到这种情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值