SQL Query使用SELECT INSERT多行

时间:2016-08-17 06:39:07

标签: mysql sql-insert

我需要从一个表中读取数据并在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或者做..虽然但找不到任何有用的东西。 谁能给我一个线索怎么做?

3 个答案:

答案 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.htmlhttp://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;