我在MySQL中有一个表,我需要连接多行。表格如下:
Order_ID | Item_ID | color
1 1 white
1 2 red
2 1 black
2 1 blue
我想根据Order_ID组合行,这将产生如下所示的结果:
Order_ID | Item_1_ID | Item_1_color | Item_2_ID | Item_2_color
1 1 white 2 red
2 1 black 1 blue
我知道有一种方法可以使用group concat将两行合并为一行,但我想这样做,以便每个字段保持分离,而不是像使用group concat那样连接。
我已经尝试过使用语句连接,如下所示:
SELECT o.*, o1.* FROM order o INNER JOIN order o1 ON o.Order_ID = o1.Order_ID
但是在一些情况下,我想加入的行太多,超过了MySQL加入的限制。
任何帮助将不胜感激,谢谢。
--- ---编辑
还有一个名为group的其他参数确定了每个订单的商品数量。该表如下所示:
Order_ID | group
1 1
2 1
因此,如果订单属于同一个组,则它们将具有相同的列数,但在一个组和另一个组之间,列数可能不同。我的查询仅针对一个组,因此列数之间的差异没有问题。
答案 0 :(得分:1)
使用GROUP BY order_id
,这会对结果进行分组,并为您提供您所描述的结果集。
编辑:
根据您尝试完成的内容,我建议您阅读有关数据库规范化的内容。您的桌子上似乎没有主键,对吗?你的表结构老实说没有任何意义,你应该将订单存储在一个单独的表中,例如order_id,user_id,...然后有一个像你一样的表,每个订单的项目,然后查询你的所有订单属于这个订单的项目。
您不希望在一行中添加相同的结果,而是将每行读入数组,然后循环遍历数组。