有時候會有這樣一個需求,
查詢的一條記錄須要包含另外一個表的多條記錄,而且讓多條記錄成爲一個字段組成最終的一條記錄。比較難描述,看例子吧。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)