更新查询“您无法在FROM子句中指定目标表'a'进行更新”

时间:2019-09-29 08:56:40

标签: mysql

我正在尝试添加新列,并希望根据某些条件更新其值,但是它不允许我这样做,因为它说“您不能在FROM子句中指定目标表'a'用于更新”

任何想法,该怎么做?

mysql

ALTER TABLE test ADD COLUMN step1_pincode VARCHAR(20);

UPDATE test a SET a.step1_pincode = 
(
SELECT CASE WHEN b.RetailerPincode IS NOT NULL 
       THEN RetailerPincode
       ELSE b.StorePartyPincode
END AS step1_pincode1
FROM test b
);

1 个答案:

答案 0 :(得分:2)

在MySQL中,您无法在SET的{​​{1}}子句中指定相同的表。而且,在您的情况下,您实际上不需要子查询。您可以直接直接使用条件UPDATE表达式。请尝试以下操作:

CASE .. WHEN

正如@TimBiegeleisen在注释中正确建议的那样,您实际上可以使用COALESCE()函数以简洁的方式编写此查询:

UPDATE test a 
SET a.step1_pincode = CASE WHEN a.RetailerPincode IS NOT NULL 
                           THEN a.RetailerPincode
                           ELSE a.StorePartyPincode
                      END