mysql一对多合并_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",

p.proName AS "产品名称",

(SELECT group_concat( c.comName ) FROM componen WHERE componen.proId

= p.proId)AS "成分"

FROM

product p;

注意:第2步骤的语句和第三部引用第二部的语句有差别,那部分很重要的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值