更新查询“您不能在FROM子句中指定目标表'a'进行更新”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新查询“您不能在FROM子句中指定目标表'a'进行更新”相关的知识,希望对你有一定的参考价值。
我正在尝试添加新列,并希望根据某些条件来更新其值,但是它不允许我这样做,因为它说“您不能在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
);
答案
在mysql中,您无法在SET
期间在UPDATE
子句中指定相同的表。而且,在您的情况下,您实际上不需要子查询。您可以直接直接使用条件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()
函数以简洁的方式编写此查询:
COALESCE()
以上是关于更新查询“您不能在FROM子句中指定目标表'a'进行更新”的主要内容,如果未能解决你的问题,请参考以下文章