簡體   English   中英

MySQL從另一個表更新

[英]mysql update from another table

我想從表西班牙文更新MySQL表cp5sql,並在PhpMyadmin中使用以下語句。 字段名稱是正確的,盡管每個表中都有一些不同。 該聲明的最后一部分是將更新限制為僅用於測試的“ able”一詞。

我收到一個錯誤,指出第2行出現了問題。

UPDATE cp5sql c
SET (Spanish_ID, Spanish_Type,Spanish_Uoffset,Spanish_Synset,Spanish_Word)=
(SELECT SID,type,offset,synset,word FROM spanish s
WHERE s.type=c.Type AND s.synset=c.synset AND c.Word ='able');

我也嘗試過:

UPDATE cp5sql
SET (Spanish_ID, Spanish_Type,Spanish_Uoffset,Spanish_Synset,Spanish_Word)=
(SELECT SID,type,offset,synset,word FROM spanish
WHERE spanish.type=cp5sql.Type AND spanish.synset=cp5sql.synset AND cp5sql.Word ='able');

您有一個很好的猜測,但這實際上是UPDATE FROM語法。
像這樣:

UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

嘗試使您的示例成為這種語法將類似於:

UPDATE cp5sql c
SET Spanish_ID = SID, 
  Spanish_Type = type,
  Spanish_Uoffset = offset,
  Spanish_Synset = synset,
  Spanish_Word = word
FROM spanish s
WHERE s.type = c.Type
  AND s.synset = c.synset
  AND c.Word ='able';

您必須使用UPDATE JOIN

UPDATE cp5sql c
JOIN spanish s
ON s.type = c.Type AND s.synset = c.synset AND c.Word = 'able'
SET 
    c.Spanish_ID = s.SID,
    c.Spanish_Type = s.type,
    c.Spanish_Uoffset = s.offset,
    c.Spanish_Synset = s.synset,
    c.Spanish_Word = s.word;

暫無
暫無

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

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