MySQL将一对多组合成一行

时间:2012-03-07 21:05:45

标签: mysql join

我有一对多的表设置。我想要做的是加入表,但不是让它返回显示不同组合的多行,我希望它返回包含3个字段的1行,每个表对应多个表。

Data:
dataID (primary key),
other data,
other data,
other data

Codes:
codeID,
dataID (foreign key),
codeValue

预期产量: dataID,codeValue1,codeValue2,codeValue3

1 个答案:

答案 0 :(得分:1)

select concat(DataID,',',CodeValues) ExpectedOutput from
(
    select A.dataID,GROUP_CONCAT(B.codeValue ORDER BY B.codeID) CodeValues
    from (select dataID from Data) A
    inner join Codes B using (dataID) group by A.dataID
) AA;

确保您拥有此复合索引

ALTER TABLE Codes ADD INDEX data_code_ndx (dataID,codeID,codeValue);