查询图书表,同时查询出图书分类名称(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中获取 ```