我有一对多的桌子。我想做的是联接表,但不是让它返回显示不同组合的多行,而是让它返回一行,其中包含3个字段,多个表中的每行对应一个字段。

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

Codes:
codeID,
dataID (foreign key),
codeValue

预期产量:
数据标识,代码值1,代码值2,代码值3

最佳答案

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);

09-25 18:36