mysql一对多查询合并多的一方的数据。
有时候会有这样一个需求, 查询的一条记录需要包含另一个表的多条记录,并且让多条记录成为一个字段组成最终的一条记录。比较难描述,看例子吧。
创建一个产品表:
create table product(
proId int(10),
proName varchar(50)
)
创建一个成分表:
create table componen(
comId int (10),
proId int(10),
comName varchar(50)
)
案例需求:如果一个产品有多个成分,也就是一个产品表对应多个成分表,我想查出的结果,一条记录包含产品 proId, ProName, ComName,的字段。
思路:
- 先写出不含成分表的查询语句,
- 然后将一个产品对应的多个成分合并成一个字段,
- 将合成的字段插入到一个语句中。
实践:
1. select p.proId , p.proName from product p;
2. SELECT group_concat( c.comName ) FROM componen WHERE componen.proId= 1
3. SELECT
p.proId AS "产品id",