MySQL join查询分类

本文详细介绍了 MySQL 中 JOIN 的使用方法及各种类型,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN,帮助读者更好地理解如何在 SQL 查询中组合多个表的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 中,`LEFT JOIN` 是一种非常常用的多表查询方式,它用于从两个或多个表中检索数据,并以左表(第一个表)为基础,返回左表中的所有记录,即使右表中没有匹配的行,也会返回 `NULL` 值。`LEFT JOIN` 也被称为 `LEFT OUTER JOIN`。 ### 基本语法 ```sql SELECT 列名 FROM 左表 LEFT JOIN 右表 ON 左表.列名 = 右表.列名; ``` 在多表查询中,可以连续使用多个 `LEFT JOIN` 来连接多个表。例如: ```sql SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名 LEFT JOIN 表3 ON 表1.列名 = 表3.列名 LEFT JOIN 表4 ON 表1.列名 = 表4.列名; ``` ### 使用示例 以下是一个使用 `LEFT JOIN` 查询多个表的示例: 假设有以下三张表: 1. `runoob_tbl`(文章表): | huthon_id | huthon_title | huthon_author | |-----------|---------------------|---------------| | 1 | MySQL 入门教程 | 张三 | | 2 | Python 编程基础 | 李四 | | 3 | Java 核心编程 | 王五 | 2. `tcount_tbl`(文章计数表): | runoob_author | huthon_count | |----------------|---------------| | 张三 | 10 | | 李四 | 5 | 3. `category_tbl`(文章分类表): | category_id | category_name | |-------------|----------------| | 1 | 数据库 | | 2 | 编程语言 | #### 查询目标: 查询每位作者的文章信息,包括作者名、文章标题、文章数量以及所属分类。 ```sql SELECT a.huthon_author AS author, a.huthon_title AS title, b.huthon_count AS count, c.category_name AS category FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.huthon_author = b.runoob_author LEFT JOIN category_tbl c ON a.huthon_id = c.category_id; ``` #### 查询结果: | author | title | count | category | |--------|-------------------|-------|-----------| | 张三 | MySQL 入门教程 | 10 | 数据库 | | 李四 | Python 编程基础 | 5 | 编程语言 | | 王五 | Java 核心编程 | NULL | NULL | 在这个查询中: - `LEFT JOIN tcount_tbl b ON a.huthon_author = b.runoob_author` 确保了即使某个作者在 `tcount_tbl` 中没有对应的计数记录,也会显示文章信息,只是 `huthon_count` 为 `NULL`。 - `LEFT JOIN category_tbl c ON a.huthon_id = c.category_id` 确保了即使某篇文章没有分类信息,也会保留文章信息,只是 `category_name` 为 `NULL`。 ### 注意事项: - `LEFT JOIN` 会返回左表中的所有记录,即使右表中没有匹配的行。 - 如果右表中没有匹配的行,则相关字段的值为 `NULL`。 - 在多表连接中,`LEFT JOIN` 的顺序可能会影响查询结果,因此需要根据业务逻辑选择合适的连接顺序。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值