通过查找另外两个表来更新用户 ID

Update user id by looking up two other tables

我有一个 table/sql 问题,我不知道如何解决。

我需要 update/create table 个带有订单 ID 的用户 ID。

因此我必须通过在旧列表中搜索电子邮件来获取新的 user_id。 使用电子邮件地址,我需要查找新用户 ID。

所以逻辑是这样的: order_id -> 查看旧的 user_id -> 查看电子邮件 -> 查看新的 user_id

我尝试创建一个示例:

---------------------
TABLE: USERS_OLD (a list of user ids and an email adress)
id  email
1   test1@email.com
2   test2@email.com
3   test3@email.com
4   test4@email.com
---------------------

---------------------
TABLE: USER_ORDERS_OLD (the connection of an order id with a user id)
user_id     order_id
1           DLEFGM
2           OPDFGT
3           UZDFGP
4           POIDSX
---------------------

---------------------
TABLE: USERS_NEW (a new list of users id with the same emails from table USERS_OLD)
id  email
5   test1@email.com
9   test2@email.com
10  test3@email.com
17  test4@email.com
---------------------

What I want to create:
---------------------
TABLE: USER_ORDERS_NEW
user_id     order_id
5           DLEFGM
9           OPDFGT
10          UZDFGP
17          POIDSX
---------------------

我不知道该怎么做。我什至不知道要搜索什么。

我设法做的是一个 LEFT JOIN sql 语句来比较用户 ID 并创建匹配 user_id 的列表。 但是我不知道如何查找更多 tables...

希望有人能帮助我。 如果它更容易,我也可以尝试在电子表格中进行。

提前致谢!

根据您的示例,您应该能够通过此查询完成此操作

INSERT INTO user_orders_new (user_id, order_id) SELECT usr_new.id, ord_old.order_id 
FROM users_old usr_old JOIN users_new usr_new ON usr_new.email = usr_old.email
                       JOIN user_orders_old ord_old ON ord_old.user_id = usr_old.id;

如果您打算迁移 ID,无论它们是否有订单,您可能希望在旧订单上选择 LEFT JOIN table,尽管我认为这不是填充新订单 table 具有尚未下订单的新用户 ID。

假设您只想return查询然后使用;

SELECT u3.id, u2.order_id
FROM USERS_OLD u1
JOIN USER_ORDERS_OLD u2 ON u1.id = u2.user_id
JOIN USERS_NEW u3 ON u1.email = u3.email;

但是,如果要将结果写入新的 table,则需要先创建 table。

CREATE TABLE USER_ORDERS_NEW (user_id INTEGER, order_id VARCHAR(50));

INSERT INTO USER_ORDERS_NEW (user_id, order_id)
       SELECT u3.id, u2.order_id
       FROM USERS_OLD u1
       JOIN USER_ORDERS_OLD u2 ON u1.id = u2.user_id
       JOIN USERS_NEW u3 ON u1.email = u3.email;

Demo