从不同 table 中的值创建 mySQL UPDATE 语句
Creating an mySQL UPDATE statement from values in a different table
由于某些不可预见的情况,我的 Open Cart table 客户已将所有记录的 address_id
重置为 0,这现在会导致问题。
我确实有 sql 的备份,但我只有 INSERT 形式的备份,但由于自上次备份以来发生了一些变化,我更希望它是 UPDATE 语句。
所以,而不是:
INSERT INTO oc49_customer (customer_id,firstname,surname,address_id etc.) VALUES ('1','Joe','Bloggs','1' ...), ('2','Jane','Doe','2'...)
我更愿意:
UPDATE oc49_customer SET address_id = 1 WHERE customer_id = 1
有没有办法轻松做到这一点,因为现在我有两个 tables - 现有客户 table 和一个 customer_temp table 这是使用正确的地址 ID 进行备份?
是的,使用子查询
Update oc49_customer
set address_id =
(Select address_id from oc49_customer_old
where customer_id = oc49_customer.customer_id)
From oc49_customer
也可以尝试完全不使用 From 子句:
Update oc49_customer
set address_id =
(Select address_id from oc49_customer_old
where customer_id = oc49_customer.customer_id)
UPDATE oc49_customer
SET address_id = (SELECT address_id
FROM oc49_customer_old
WHERE (oc49_customer_id = oc49_customer_old_id)
WHERE EXISTS ( oc49_customer_id = oc49_customer_old_id )
由于某些不可预见的情况,我的 Open Cart table 客户已将所有记录的 address_id
重置为 0,这现在会导致问题。
我确实有 sql 的备份,但我只有 INSERT 形式的备份,但由于自上次备份以来发生了一些变化,我更希望它是 UPDATE 语句。
所以,而不是:
INSERT INTO oc49_customer (customer_id,firstname,surname,address_id etc.) VALUES ('1','Joe','Bloggs','1' ...), ('2','Jane','Doe','2'...)
我更愿意:
UPDATE oc49_customer SET address_id = 1 WHERE customer_id = 1
有没有办法轻松做到这一点,因为现在我有两个 tables - 现有客户 table 和一个 customer_temp table 这是使用正确的地址 ID 进行备份?
是的,使用子查询
Update oc49_customer
set address_id =
(Select address_id from oc49_customer_old
where customer_id = oc49_customer.customer_id)
From oc49_customer
也可以尝试完全不使用 From 子句:
Update oc49_customer
set address_id =
(Select address_id from oc49_customer_old
where customer_id = oc49_customer.customer_id)
UPDATE oc49_customer
SET address_id = (SELECT address_id
FROM oc49_customer_old
WHERE (oc49_customer_id = oc49_customer_old_id)
WHERE EXISTS ( oc49_customer_id = oc49_customer_old_id )