Mysql 将同一个表连接到多个列(非规范化?)

标签 mysql

我将简化我的真实表格来提出这个问题 假设以下标准化表格

苏打水

idSoda
sodaName

味道

idFlavor
FlavorText

SodaFlavorAsc

SodaID
FlavorID

假设苏打水可以有多种口味(最多三种),我如何创建一个查询,将数据非规范化回一个平面表?

idSoda, sodaName, FlavorText(first occurance), FlavorText(second occurance), FlavorText(third occurance)

最佳答案

对于同一列中的多种口味,请使用分组和 GROUP_CONCAT .

SELECT s.idSoda, GROUP_CONCAT(f.FlavorText SEPARATOR ',') as flavors
FROM Soda s
LEFT JOIN SodaFlavorAsc sfa ON sfa.SodaId = s.idSoda
LEFT JOIN Flavor f ON f.idFlavor = sfa.FlavorID
GROUP BY s.idSoda

关于Mysql 将同一个表连接到多个列(非规范化?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50259028/

相关文章:

mysql - 查询未运行。 mysql密码中有#

mysql - 删除具有最小 int SQL mySQL 的行

php脚本错误我mysql连接错误

mysql - Laravel 多态关系问题

MYSQL:将自动增量值插入多个列

MySQL 工作台未安装

java - 如何防止准备好的语句更新 TIMESTAMP 列?

mysql - MySQL group by 查询出错

mysql - 从子查询中访问主表数据

MySQL:如何使用过滤向量列表进行更新?