我需要从一个表中读取数据并在MySQL数据库的另一个表中插入多行。
表1看起来像:
ID, name, e-mail, phone, city, ..., ....
在表2中,我需要插入如下数据:
(row1) ID, "name", name
(row2) ID, "e-mail, e-mail
(row3) ID, "phone", phone
...
...
表1有大约3000行
我想我需要使用某种foreach或者做..虽然但找不到任何有用的东西。 谁能给我一个线索怎么做?
答案 0 :(得分:5)
如果我正确理解了您的问题,您希望对返回多行的table1执行查询,然后在单个循环中将这些行插入到table2中。这是INSERT INTO SELECT
声明:
INSERT INTO table2
(name, email, phone)
SELECT name, email, phone
FROM table1;
可以修改它以获取特定结果:
INSERT INTO table2
(name, email, phone)
SELECT name, email, phone
FROM table1
WHERE name = 'target person';
可以在http://dev.mysql.com/doc/refman/5.7/en/insert-select.html和http://www.w3schools.com/sql/sql_insert_into_select.asp找到更多信息。
编辑:
根据您的评论,听起来您正在尝试这样做: SQL split values to multiple rows
我无法想到您实际上想要这样做的情况,因为您可以按原样访问现有表格中的所有数据,并且以您要求的方式分割数据似乎是不好的做法。但是,上述主题中的解决方案应该适用于您尝试做的事情。
最终,您可能希望了解您实际上检索数据的方式。修改该代码将是一个更好的主意:)
答案 1 :(得分:0)
关于我是如何做到这一点的最新消息。由于我没有对数据库服务器的完全访问权限,我只能添加/删除数据并创建新表,因此无法按照答案中提供的链接创建功能。 我没有尝试遍历数据,而是为每个新行执行了INSERT,如: INSERT INTO table2(id,col2,col3) SELECT id,' name',name FROM table1; INSERT INTO table2(id,col2,col3) SELECT id,' email',email FROM table1;
再次感谢您提供的帮助。
答案 2 :(得分:0)
只需按“id”组进行简单的INSERT INTO SELECT。对于每个id,它将插入一条新记录。
INSERT INTO table2 (name, email, phone)
SELECT name, email, phone FROM table1 GROUP BY id;