我需要从 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 但找不到任何有效的东西。 谁能告诉我如何做到这一点?
如果我正确理解你的问题,你想要在 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 将值拆分为多行。
我想不出您实际上想要这样做的情况,因为您可以按原样访问现有表中的所有数据,并且在表中分割数据似乎是不好的做法你要求的方式。但是,上述线程中的解决方案应该适用于您想要做的事情。
最终,您可能想看看您实际上是如何“检索”数据的。修改该代码将是一个更好的主意:)
INSERT INTO table2 (name, email, phone)
SELECT name, email, phone FROM table1 GROUP BY id;
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;
再次感谢您提供的帮助。