我有一个一对多的表设置。我想要做的是加入表格,但不是让它返回显示不同组合的多行,我希望它返回具有 3 个字段的 1 行,一个用于多个表中的每一行。
Data:
dataID (primary key),
other data,
other data,
other data
Codes:
codeID,
dataID (foreign key),
codeValue
预期输出: dataID, codeValue1, codeValue2, codeValue3
最佳答案
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);
关于MySQL 将一对多组合成一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9609043/