开发者社区> 问答> 正文

将多个子行合并为一行MYSQL?mysql

在此先感谢,我似乎无法理解!

我有两张桌子

Ordered_Item

ID | 项目名称 1 | 比萨 2 | 斯特龙博利 Ordered_Options

Ordered_Item_ID | Option_Number | 值 1 43​​意大利辣香肠 1 44额外的奶酪 2 44额外的奶酪 我想要输出的是mysql查询,可以达到这种效果

输出量

ID | 项目名称| 选项_1 | 选项_2 1披萨意大利辣香肠额外奶酪 2 Stromboli NULL额外奶酪 我尝试了很多选项,大多数以语法错误结尾,我尝试了group_concat,但这并不是我真正想要的。下面有一个简单的例子,我认为这可能是一个开始。我需要选项每次都按相同顺序排列。在收集信息的程序中,没有办法可靠地确保将要发生。是否可以根据选件号将它们连接在一起。我也知道我永远不会有5个以上的选择,因此静态解决方案会起作用

Select Ordered_Items.ID, Ordered_Items.Item_Name, FROM Ordered_Items JOIN (SELECT Ordered_Options.Value FROM Ordered_Options Where Option_Number = 43) as Option_1 ON Ordered_Options.Ordered_Item_ID = Ordered_Item.ID JOIN (SELECT Ordered_Options.Value FROM Ordered_Options Where Option_Number = 44) as Option_2 ON Ordered_Options.Ordered_Item_ID = Ordered_Item.ID; 谢谢!乔

展开
收起
保持可爱mmm 2020-05-16 20:57:17 473 0
1 条回答
写回答
取消 提交回答
  • 最简单的方法是在这里使用GROUP_CONCAT组函数。

    select ordered_item.id as Id, ordered_item.Item_Name as ItemName, GROUP_CONCAT(Ordered_Options.Value) as Options from ordered_item, ordered_options where ordered_item.id=ordered_options.ordered_item_id group by ordered_item.id 哪个会输出:

    Id ItemName Options

    1 Pizza Pepperoni,Extra Cheese

    2 Stromboli Extra Cheese 这样,您可以根据需要选择多个选项,而无需修改查询。

    嗯,如果您看到结果被裁剪,可以像下面这样增加GROUP_CONCAT的大小限制:

    SET SESSION group_concat_max_len = 8192;来源:stack overflow

    2020-05-16 20:58:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像