我正在尝试使用TableA
中的值更新TableB
,并使用唯一的id
字段进行匹配,并添加WHERE
条件。
搜索网络,找到下面的代码。出于某种原因,MYSQL声明存在语法错误。
UPDATE
TableA
SET
TableA.field1 = TableB.field1
FROM
TableA
INNER JOIN
TableB
ON
TableA.id = TableB.id
WHERE
TableA.field1 <> ''
LIMIT 100;
答案 0 :(得分:1)
MySQL中的正确语法是:
UPDATE TableA INNER JOIN
TableB
ON TableA.id = TableB.id
SET TableA.field1 = TableB.field1
WHERE TableA.field1 <> '';
注意:您不能将LIMIT
与JOIN
一起使用。
如果您想使用LIMIT
,可以执行以下操作:
UPDATE TableA
SET TableA.field1 = (SELECT TableB.field1 FROM TableB WHERE TableA.id = TableB.id)
WHERE TableA.field1 <> '' AND
EXISTS (SELECT 1 FROM TableB WHERE TableA.id = TableB.id)
LIMIT 100;
(如果您知道EXISTS
中始终存在匹配项,则可以省略TableB
表达式。如果可以进行多项匹配,则可以将LIMIT 1
添加到子查询中。)
我建议您始终将ORDER BY
与LIMIT
一起使用。这样,您就可以控制要更新的行。