我有一对多的桌子。我想做的是联接表,但不是让它返回显示不同组合的多行,而是让它返回一行,其中包含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);