0

我在 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 中 61 加入的限制。

任何帮助将不胜感激,谢谢。

- -编辑 - -

还有另一个称为 group 的参数,它决定了每个订单的商品数量。该表如下所示:

Order_ID   |  group
 1           1
 2           1

因此,如果订单属于同一组,它们将具有相同的列数,但在一组和另一组之间,列数可能不同。而且我的查询仅针对一组,因此列数之间的差异没有问题。

4

1 回答 1

1

使用GROUP BY order_id,这将对您的结果进行分组,并为您提供您所描述的结果集。

编辑:

根据您尝试完成的工作,我建议您阅读有关数据库规范化的信息。您的表中似乎没有主键,是吗?老实说,您的表结构没有任何意义,您应该将订单存储在一个单独的表中,例如 order_id、user_id...属于这个秩序。

您不想在一行中添加相同的结果,而是将每一行读入一个数组,然后循环遍历该数组。

于 2012-08-05T10:35:46.570 回答