MySQL:区分各种join,连接条件on和过滤条件where

MySQL连接两个表的ID实现数据关联和查询mysql两表id连接

我记得有一次,我必须帮助同事处理一份销售数据报告。
他们有两个表,分别是客户信息和订单信息,但是客户信息和订单信息是分开的。
我坐在电脑前,面前是一张堆满数据的桌子,我感到有些困惑。

我打开 MySQL 并开始尝试使用内部联接连接两个表。
我输入了代码,检查了几次,然后按回车键。
几秒钟后,客户ID、客户姓名和对应的订单ID出现在桌子上,我感到很安心。
当时我花了2 0分钟才成功连接两个表并得到完整的销售数据。

等一下,我突然想到,如果客户没有订单,数据不就失效了吗?然后我又尝试了左外链接,果然,也找到了没有订单的客户信息。
这样,销售报表就更加完整了。
那天我花了半个小时不仅学习了如何绑定两个表的ID,还学习了如何处理空值。

不过,我还是有点好奇。
如果这两个表的关系比较复杂,比如多个相关字段,应该如何处理?

MySQL连接查询 内连接和外连接的区别

内连接:仅显示与两个表匹配的行。
例如,Oracle仅当A列相同时才显示TESTA和TESTB。

外连接:匹配行太多。
共有三种类型: 左外连接:TESTA 显示全部,TESTB 仅显示匹配的。
Oracle写入方法:LEFT OUTER JOIN。
右外连接:TESTB 显示全部,TESTA 仅显示匹配的。
Oracle写入方法:RIGHT OUTER JOIN。
完全外连接:显示两个不匹配的表。
Oracle写入方法:FULL OUTER JOIN。

项目用例:Oracle环境,TESTA和TESTB表各有两列A和B。
左外连接: sql SELECT FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A=TESTB.A
结果:TESTA 的所有行,TESTB 只匹配 A 列中的行。