我在Foo.A中得到了一个数值,它在Bar中具有等价但是带有字符串前缀(" Z")。我试图追加" Z"到Bar.A col值。我也试过CONCAT
但没有成功。以下代码返回"未知列Z"。
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = Z + Bar.A
例如14(Foo.A)= Z14(Bar.A)。
答案 0 :(得分:3)
如果您的语法有效,那么很可能您正在使用MySQL。在任何情况下,问题是你需要围绕字符串常量引用。所以试试这个:
UPDATE Foo join
Bar
on Foo.A = concat('Z', Bar.A)
SET Foo.B = Bar.B;
无论数据库如何,您都应该始终对字符串和日期常量使用单引号。这是ANSI标准,它减少了出错的可能性。
答案 1 :(得分:1)
您缺少Z周围的单引号,即您的代码应为:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT('Z', Bar.A);
答案 2 :(得分:0)
其实我找到了。我错过了""
中的CONCAT
。
这是有效的:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT("Z", Bar.A)
答案 3 :(得分:-1)
您在何处加入语句,您在更新语句中使用表B,在where条件中使用表A.这不会起作用