我在Foo中得到了一个数值。A,它在Bar中有等价的,但带有字符串前缀("Z")。我试图将"Z"附加到栏。col值。我也尝试过CONCAT
,但没有成功。以下代码返回"未知列Z"。
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = Z + Bar.A
例如14 (Foo.A) = Z14(吧)。
如果你的语法工作,那么很可能你正在使用MySQL。在任何情况下,问题是需要在字符串常量周围加上引号。所以试试这个:
UPDATE Foo join
Bar
on Foo.A = concat('Z', Bar.A)
SET Foo.B = Bar.B;
无论在什么数据库中,字符串和日期常量都应该使用单引号。这是ANSI标准,它减少了错误的可能性。
你缺少Z周围的单引号,即你的代码应该是:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT('Z', Bar.A);
其实我找到了。我错过了CONCAT
中的""
。
正在运行:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT("Z", Bar.A)
Where is join语句,在update语句中使用表B,在Where条件中使用表A。这行不通