我正在尝试添加新列,并希望根据某些条件更新其值,但是它不允许我这样做,因为它说“您不能在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
);
答案 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