簡體   English   中英

MYSQL:UPDATE INNER JOIN語法錯誤

[英]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 <> '';

注意:不能將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;

(如果知道TableB始終存在匹配項,則可以省略EXISTS表達式。如果可能有多個匹配項,則可以在子查詢中添加LIMIT 1 。)

我建議您也始終將ORDER BYLIMIT一起使用。 這樣,您可以控制要更新的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM