left join陷阱之一对多导致数据量增加




从上面2张图可以看出,本来我们是想用一些left join来匹配出我们需要的信息

但却因此使得我们的统计数据量增大了  为什么呢?






这个就是原因了 ,我们关联的一张表有1:n的情况





为了演示清楚和证明,请看下面:




内连接(`INNER JOIN`)和 `JOIN` 关键字都是用于执行数据库表格之间的关联操作。它们实际上在功能上是相同的,在大多数 SQL 实现中,当你仅使用 `JOIN` 而不指定类型时,默认会执行内连接。 ### `INNER JOIN` 的特性: **主要特点**:`INNER JOIN` 返回两个表之间具有匹配记录的结果集,只包含两表共同部分的数据。它基于匹配的列来联接两个表,并仅返回这两个表中都存在的记录。 **语法示例**: 假设我们有两个表 `Orders` 和 `Customers`,每个表都有一个 `CustomerID` 列。我们想要查询那些下过订单并且是已知客户的记录: ```sql SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID; ``` 在这个例子中,结果只包含 `Orders` 表和 `Customers` 表中 `CustomerID` 相同的记录。 ### `JOIN` 的使用方式与 `INNER JOIN` 类似: 在许多情况下,你可以省略 `INNER` 并使用 `JOIN` 来实现相同的功能: ```sql SELECT Orders.OrderID, Customers.CustomerName FROM Orders JOIN Customers ON Orders.CustomerID = Customers.CustomerID; ``` 这种简化的方式并不会改变查询的含义或结果,只是语法上的差异。 ### 总结: 尽管 `JOIN` 和 `INNER JOIN` 在功能上相似,但明确使用 `INNER JOIN` 可以避免误解或混淆,特别是在涉及到其他类型的连接(如 `LEFT JOIN`, `RIGHT JOIN`, `FULL JOIN`)时。在编写 SQL 查询时选择更具体的连接类型可以增加代码的可读性和意图的清晰度。 ---
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值