查询图书表,同时查询出图书分类名称(JOIN和IN查询)
        2021-11-11 11:19:07
                book 图书表
```
id	name	            category_id
1	深入理解计算机系统       	4
2	Java编程思想	           1
4	C语言程序设计	           1
5	Java并发编程之美	        3
6	HTTP权威指南	           2
```
category  分类表
```
id	name
1	编程语言
2	网络协议
3	微服务
4	综合
```
常用的两种方式:
第1种  查询图书表,同时查询出图书分类名称
```
SELECT book.*, category.name AS category_name FROM book JOIN category ON book.category_id = category.id 
```
```
id	name	         category_id      category_name
1	深入理解计算机系统	4             综合
2	Java编程思想	    1             编程语言
4	C语言程序设计	    1             编程语言
6	HTTP权威指          2             网络协议
7	微服务设计	       3            微服务
8	设计模式	        3             微服务
9	数据结构与算法       1             编程语言
10	现代编译原理        3             微服务
11	Python科学计算     4             综合
12	汇编语言	       1             编程语言
```
第2种  不使用多表联查,用两条SQL查询,在程序中组装数据
```
// 1. 查询图书列表
SELECT * FROM book
// 2. 通过上一步得到的图书列表,取出所有分类id,并去重
// ids = {4 ,1 ,2, 3}
// 3. 通过IN语句,查询分类表得到分类名称,存到一个Map中,分类id为Key,Value为分类名称
SELECT name FROM category WHERE id IN (4,1,2,3)
// 4. 给第一步得到的图书对象,设置对应的分类名称,可以很方便的从第3部中得到的Map中获取
```