我有两个表cstomers和orders表。 这些表包含20,000条记录
我需要的是我想根据电子邮件使用customer_id更新订单表。 我可以使用子查询和PHP或者它可以使用单个查询和有效的方法完成吗?
id email name
--------------
1 | email1 | name1
2 | email2 | name3
3 | email3 | name3
order_id customer_id email product name group_id
-------------- -----------------------------------------
1 1 email1 prod1 0
2 (NULL) email1 prod1 1
3 1 email1 prod1 0
4 (NULL) email2 prod1 1
5 2 email2 prod1 0
6 2 email2 prod1 1
7 (NULL) email2 prod1 1
2 (NULL) email1 prod1 1
答案 0 :(得分:1)
UPDATE customers c INNER JOIN orders o ON o.customer_id = c.id
SET o.customer_id = c.id
WHERE o.email = c.email
应该这样做。因为这是INNER JOIN
,所以它不会更新customers
表中不存在的用户帐户的订单。
答案 1 :(得分:-1)
也许这(未经测试)
UPDATE orders o SET o.customer_id = (SELECT c.customer_id FROM customers c WHERE c.email = o.email)