将表中的许多行插入另一个表中的一个唯一行

时间:2016-06-30 00:43:56

标签: php mysql sql foreach row

我有一个名为video.videoHeight的表,其中设置了列名order

list

我想将TABLE list id | list | price | date --------------------------------------- 1 | Cigar | 5.00 | 2016-06-30 2 | Beer | 6.00 | 2016-06-30 3 | Whiskey | 20.00 | 2016-06-30 4 | Bacon | 10.00 | 2016-06-30 插入到另一个名为list的表中,以便所有这些表都可以在同一行中!但是,它不起作用,并插入许多行!

我想要的方式

confirmation

方式显示

TABLE confirmation
id |            theorder             
--------------------------------
1  | Cigar, Beer, Whiskey, Bacon

以下是代码:我正在使用foreach!

TABLE confirmation
id |  theorder      
--------------
1  | Cigar,
2  | Beer,
3  | Whiskey,
4  | Bacon,

1 个答案:

答案 0 :(得分:2)

每次执行INSERT查询时,都会创建一个新行。由于您是在循环中执行此操作,因此会为每个产品创建一个新行。

如果要合并项目,请使用GROUP_CONCAT

INSERT INTO confirmation (theorder)
SELECT GROUP_CONCAT(list SEPARATOR ', ')
FROM `order`

请注意,您需要使用反引号引用表名order,因为它是一个保留字。通常最好避免使用保留字作为表名和列名,因为如果你忘记引用它,你会得到一个令人困惑的语法错误。见Syntax error due to using a reserved word as a table or column name in MySQL