MySQL left join、right join和join的区别

数据库左连接、右连接、内连接、全连接笔记

你说的太专业了,光是看都让人眼花缭乱。
我来说说我在混日子时犯过的错误吧。

那年接手一个项目,一堆数据表乱七八糟,有销售表、产品表、用户表。
老板坚持要我在报告中包括用户购买了什么以及花费了多少。
我在想,由于 Sales 表包含订单,而 Users 表包含用户信息,因此我需要“连接”这两个表。

一开始我不太明白你提到的联系。
我盲目地编写代码,并花了很多时间编写 INNER JOIN。
事实证明,很多用户没有买任何东西,立刻就消失了。
报告中只剩下那些购买过任何东西的人。
老板看了一眼,摇摇头说道:“不对啊,老王,我明明有很多外部和内部用户都没有买过,为什么我看不到呢?”没关系,我会尝试左连接。
写完之后,我看到所有的用户都出现了,包括购买过东西的用户。
未购买任何商品的用户栏为空。
这下老板满意了,说:“好吧好吧,没买东西的人就算没买东西也要记录一下。

后来又遇到了一个问题。
客户坚持在报表中显示所有用户,无论他们是否购买过,以及购买了什么买。
我再次检查了正确的连接。
难道不是反过来吗?所有用户都应该有这个。
将他们购买的商品一栏留空。
花了更长的时间。

最大的威胁是什么?当我用MySQL写FULL JOIN的时候,发现MySQL不支持!我想显示所有用户和他们购买的所有东西,但代码不起作用。
在网上找啊找,终于找到了一个简单的方法。
首先,使用左联接删除所有用户和购买的商品,然后运行右联接,最后使用另一种方法对两个结果表进行重复数据删除。
这个过程,啧啧,很简单。
现在想想,SQL真是一个苦差事。

所以,这些连接实际上并不是随机编写的,它们取决于具体的要求。
我在做那个项目的时候,就是因为老板的一句话,才导致我不得不打断腿去完成报告。
你说的很清楚,很有逻辑,比我当时说的好多了。