如何用sql语句查询两张表中的相同字段数据

说实话,我经常写这个SQL语句,但是每次使用LEFT JOIN和RIGHT JOIN的时候,我都要思考一下其中的区别。
以您给出的示例为例,INNER JOIN 简单粗暴。
这意味着两个表中具有公共字段的行(如您编写的 a.col=b.col )将不会显示。
这就像两个同学总是一起上课,我只向你展示成绩单中重叠的部分。

左连接怎么样?这个东西很酷的一点是,无论左表(第一个表)中的数据是否与右表(第二个表)中的数据匹配,你都会看到左表中的数据。
如果右表中没有匹配项,则输入 NULL。
这个场景在我上次使用它时非常典型。
要检查给定项目的所有参与者,左表是项目表,右表是参与者表。
即使没有人参与项目,项目信息也应该显示,并且参与者栏将为空。

RIGHT JOIN 正好相反。
它为您提供右表中的所有数据,如果左表中没有匹配项,则填充 NULL。
我在检查供应商的供货记录时就遇到过一次这种情况。
右表是供应商表,左表是具体订单表。
即使特定供应商不提供货物,其基本信息也必须出现在结果中,并且订单栏将为空。

至于FULL JOIN,这个是最完整的了。
如果两个表中有匹配的行,则会将它们提供给您。
如果没有匹配行,则将 NULL 插入到另一个表列中。
当我写这篇文章时,我问自己:真的有必要使用完全连接吗?性能会爆炸吗?这样的场景通常不多,但是检查历史数据关系,比如用户表、订单表,如果有表缺失,使用全连接查看全貌,还是蛮实用的。

最终,选择哪个订阅取决于您想要的数据。
如果您想查看两个重叠的表,请使用 INNER JOIN。
如果要保留左表(或右表)中的所有数据,即使其他部分不匹配,请使用 LEFT JOIN(或 RIGHT JOIN)。
如果需要查看两个表中的所有数据,可以使用FULL JOIN,但是需要考虑性能。

sql左连接写法

左连接意味着先查看左表,然后查看右表,如果没有匹配,则用 NULL 填充右表。
例如,如果您使用 LEFT JOIN 检查订单和客户,您还将看到没有客户的订单,该订单将为 NULL。
简单来说,就是左边出来了。
如果右边有一场比赛就更好了。
如果没有,它将是空的。
不要忘记使用大写和缩进以使代码更易于阅读。

sql左连接与内连接的区别

我记得一个周末下午坐在电脑前,面对满屏的SQL语句,试图从两张销售数据表中找出哪些客户下了订单。
我尝试了内部联系,但我只看到那些既购买了产品又下订单的客户。
那些只购买产品但没有下订单的顾客消失了。
我心想,这不是我想要的,我需要看到所有客户的信息,即使他们还没有下订单。

所以我改成了左连接,结果立刻就不同了。
我查看了所有客户的信息,那些没有下订单的客户在订单栏显示为NULL。
这让我意识到,左选择加入就像向每个客户发送订单表格,即使他们没有填写订单信息。

这个小实验让我明白左连接和内连接就像两个不同的视角。
一个仅查看已填写订单的客户,另一个显示所有客户的信息,即使他们尚未填写订单。
这就像我们人生中的一个选择。
有时我们需要严格的标准,有时我们需要宽容和诚信。

等等,还有一件事,我突然想到,如果有一天我们可以将这两种连接方式结合起来,会是什么样子?