[英]MYSQL: UPDATE FROM INNER JOIN syntax error
我正在嘗試使用TableB
值更新TableA
並通過唯一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;
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;
(如果知道TableB
始終存在匹配項,則可以省略EXISTS
表達式。如果可能有多個匹配項,則可以在子查詢中添加LIMIT 1
。)
我建議您也始終將ORDER BY
與LIMIT
一起使用。 這樣,您可以控制要更新的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.