MYSQL:UPNER INNER JOIN语法错误

时间:2016-11-20 17:51:58

标签: mysql sql join

我正在尝试使用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;

1 个答案:

答案 0 :(得分:1)

MySQL中的正确语法是:

UPDATE TableA INNER JOIN
       TableB
       ON TableA.id = TableB.id
    SET TableA.field1 = TableB.field1
WHERE TableA.field1 <> '';

注意:您不能将LIMITJOIN一起使用。

如果您想使用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 BYLIMIT一起使用。这样,您就可以控制要更新的行。