使用联结将数据从表移动到另一个的最佳MySQL方法

时间:2019-03-26 17:10:42

标签: mysql

我有一个名为members的SQL表

| member_id | first_name | last_name | email                      | password | phone_number | country |
|-----------|------------|-----------|----------------------------|----------|--------------|---------|
| 1         | John       | Doe       | john.doe@rambo.vid         | 123456   | 654789159    | en_US   |
| 2         | Jules      | Ferry     | jules.ferry@politician.old | 456789   |              | fr_FR   |

我想创建一个新表users并使用user_id这样的方式移动数据:

用户

| user_id | first_name | last_name | email                      | password |
|---------|------------|-----------|----------------------------|----------|
| 1       | John       | Doe       | john.doe@rambo.vid         | 123456   |
| 2       | Jules      | Ferry     | jules.ferry@politician.old | 456789   |

成员

| member_id | user_id | phone_number | country |
|-----------|---------|--------------|---------|
| 1         | 1       | 654789159    | en_US   |
| 2         | 2       |              | fr_FR   |

MySQL中修改现有数据库的最佳方法(更有效的执行)是什么?

1 个答案:

答案 0 :(得分:0)

这就是我的想法:

INSERT INTO users ( user_id, member_id, first_name, last_name, email, password)
    SELECT <user_id>, -- Wherever this needs to come from or remove if its generated.
         member_id, first_name, last_name, email, password
    FROM members;

其次:

UPDATE members m INNER JOIN users u
    ON m.member_id = u.member_id 
    SET m.user_id = u.user_id

我在用户表中添加了您没有的member_id字段。如果您没有这样做的选项,则可以使用其他标识符来联接表。