有时候会有这样一个需求,
查询的一条记录须要包含另外一个表的多条记录,而且让多条记录成为一个字段组成最终的一条记录。比较难描述,看例子吧。code
建立一个产品表:产品
create table product( proId int(10), proName varchar(50) )
建立一个成分表:table
create table componen( comId int (10), proId int(10), comName varchar(50) )
案例需求:若是一个产品有多个成分,也就是一个产品表对应多个成分表,我想查出的结果,一条记录包含产品 proId, ProName, ComName,的字段。select
思路:引用
实践:查询
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步骤的语句和第三部引用第二部的语句有差异,那部分很重要的!
*若是要对合并的一方去重:嵌套DISTINCT便可tab
(SELECT group_concat( DISTINCT(c.comName) ) FROM componen WHERE componen.proId= p.proId)