我正在尝试添加新列并希望根据某些条件更新其值,但它不允许我这样做,它说"您不能指定目标表'a'进行更新 FROM 子句">
任何想法,如何做到这一点?
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
);
在 MySQL 中,您不能在UPDATE
期间在SET
子句中指定相同的表。此外,在您的情况下,您实际上并不需要子查询;您可以直接使用条件CASE .. WHEN
表达式。请尝试以下操作:
UPDATE test a
SET a.step1_pincode = CASE WHEN a.RetailerPincode IS NOT NULL
THEN a.RetailerPincode
ELSE a.StorePartyPincode
END
正如@TimBiegeleisen注释中正确建议的那样,您实际上可以使用COALESCE()
函数以简洁的方式编写此查询:
UPDATE test
SET step1_pincode = COALESCE(RetailerPincode, StorePartyPincode)