使用 SELECT 插入多行的 SQL 查询

问题描述 投票:0回答:3

我需要从 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 或 do..while 但找不到任何有效的东西。 谁能告诉我如何做到这一点?

mysql sql-insert
3个回答
28
投票

如果我正确理解你的问题,你想要在 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 将值拆分为多行

我想不出您实际上想要这样做的情况,因为您可以按原样访问现有表中的所有数据,并且在表中分割数据似乎是不好的做法你要求的方式。但是,上述线程中的解决方案应该适用于您想要做的事情。

最终,您可能想看看您实际上是如何“检索”数据的。修改该代码将是一个更好的主意:)


1
投票

INSERT INTO table2 (name, email, phone) SELECT name, email, phone FROM table1 GROUP BY id;



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;

再次感谢您提供的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.