left join on多表关联问题
时间: 2023-11-03 18:20:22 浏览: 95
解析mysql left( right ) join使用on与where筛选的差异
在多表关联问题中,使用LEFT JOIN可以取得左表(table1)的全部记录,即使右表(table2)没有对应的匹配记录。基本的LEFT JOIN语法如下:
SELECT ...
FROM table1
LEFT JOIN table2 ON condition
通过这种方式,可以将两个表进行关联,并且会将左表的所有记录都包含在结果中,无论右表是否有匹配记录。
在三表连接的情况下,左连接的结果会根据左表(t1)的记录进行生成。当t1关联t2时,如果t2中不存在与t1的code相等的记录,那么该行的t2字段值将为null。然后再将这个结果与t3进行关联,如果t3中也不存在与t1的code相等的记录,那么该行的t3字段值也将为null。
下面是左关联的实例:
SELECT a.*, b.*, c.*
FROM t1 a
LEFT JOIN t2 b ON a.alarm_code = b.alarm_code
LEFT JOIN t3 c ON a.alarm_code = c.alarm_code
而直接使用相等条件进行连接的情况,只会查询出两个表中字段相等的记录。当只关联t1和t2时,可以使用以下语句:
SELECT a.*, b.*
FROM t1 a, t2 b
WHERE a.alarm_code = b.alarm_code
根据这个结果,可以将其看作是另外生成的t1表,然后再与t3进行关联。但是这种情况下,t1和t3中相等的记录可能会减少,因为code3可能不在后来生成的t1表中。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程](https://download.csdn.net/download/weixin_38653687/13695747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [一张表左关联另外两张表,三表关联](https://blog.csdn.net/weixin_46305078/article/details/109486172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文