Mysql PHP查询更新

时间:2010-11-11 20:20:16

标签: php mysql

我有两个表cstomers和orders表。 这些表包含20,000条记录

我需要的是我想根据电子邮件使用customer_id更新订单表。 我可以使用子查询和PHP或者它可以使用单个查询和有效的方法完成吗?

customers表

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
  • group_id = 0表示客户有帐户
  • group_id = 1表示客户没有帐户

2 个答案:

答案 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)