MySQL 根据其他表中的ID插入每一行

MySQL 根据其他表中的ID插入每一行

在MySQL中,我们时常需要根据另一张表中的ID插入每一行数据。本文将提供两种方法实现此功能,一种是使用MySQL JOIN语句,另一种是使用MySQL子查询语句。

阅读更多:MySQL 教程

使用MySQL JOIN语句

Join是MySQL中的一种常用操作,可以将多张表连接在一起查询数据。在使用Join插入数据时,我们需要先创建一张新的表,包含与我们要插入数据的表相同的字段,例如:

CREATE TABLE new_table(
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255),
  age INT,
  PRIMARY KEY (id)
);

然后,我们使用JOIN语句查询需要插入的数据和它们对应的ID,例如:

SELECT t1.id, t2.name, t2.age
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id;

我们将结果保存到一个变量中,例如:

SET @s = CONCAT('INSERT INTO new_table (name, age) VALUES ',
       (SELECT GROUP_CONCAT(
           DISTINCT CONCAT('(''', name, ''', ', age, ')')
           SEPARATOR ',')
        FROM (
         SELECT t1.id, t2.name, t2.age
         FROM table1 t1
         JOIN table2 t2 ON t1.id = t2.id
       ) AS temp));

请注意,我们在INSERT INTO语句中省略了ID字段,因为它是自动递增的。然后,我们可以执行新的INSERT INTO语句,将结果插入到新的表中:

PREPARE stmt1 FROM @s;
EXECUTE stmt1;

这样,我们就完成了一张表中根据另一张表中的ID插入每一行数据的操作。

使用MySQL子查询语句

另一种实现方法是使用MySQL子查询语句。我们可以编写一个SELECT语句,将目标表中的ID作为输入,并根据这些ID插入新数据到我们想要的表中,例如:

INSERT INTO new_table (name, age)
SELECT t2.name, t2.age
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id;

请记住在INSERT语句中忽略自动增长ID字段。

总结

使用MySQL JOIN语句和MySQL子查询语句,我们可以实现在一张表中根据另一张表中的ID插入每一行数据的操作。虽然使用JOIN语句的效率更高,但是在某些情况下使用子查询语句更加方便。在实际开发中,我们需要根据具体情况选择最合适的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程