MySQL 将一对多组合成一行

标签 mysql join

我有一个一对多的表设置。我想要做的是加入表格,但不是让它返回显示不同组合的多行,我希望它返回具有 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/

相关文章:

MySQL 错误 1443 解决方法

单个查询中的 MySQL JOIN 和 COUNT

javascript - 将字符串转换为分隔对象键

python - 在 Pandas 条件连接中保留左/右连接逻辑

php - 我如何防止在 PHP 中重复提交表单(跨多个窗口进行保护)?

php mysqli bind_param $insert->execute() 始终返回 true

c# - 在 C# 中从 MySQL 数据库复制粘贴到另一个程序的表单

iphone - 在核心数据中列出共同的 friend

linux - 在linux中如何加入2个文件

mysql - 如何自定义MySql Connector/net?