更新:問題是表1有很多表2沒有的行,這就是爲什麼查詢在第一次運行時更新了多個行,但是再次運行查詢時,它只更新了一個行。我不知道爲什麼它更新了未包含在JOIN
查詢中的行。帶JOIN的MySQL更新 - 爲什麼只用一個值更新每個字段?
我需要更新表1兩個領域,從兩個字段的數據在表2中
我嘗試這樣做:
UPDATE heroku_chemical_healtheffect h,
chebi2_compounds c
SET h.chebi_id = c.chebi_accession, h.chebi_name = c.name
WHERE h.name = c.name
但它返回:1 rows affected. (Query took 0.1351 seconds.)
I特里d使用完整語法:
UPDATE heroku_chemical_healtheffect AS h
INNER JOIN chebi2_compounds AS c
ON h.name = c.name
SET h.chebi_id = c.chebi_accession, h.chebi_name = c.name
但發生同樣的事情。我是否以錯誤的方式或其他方式將查詢放在一起?
繼承人table 2
:
當我運行SELECT與JOIN查詢:
SELECT * FROM heroku_chemical_healtheffect AS h
JOIN chebi2_compounds AS c
ON h.name = c.name
我認爲也許是使用索引的問題,所以我刪除來自h.chebi_id
和h.chebi_name
的索引並將索引放在h.name
和c.name
但它沒有改變任何東西。
奇怪的是,它沒有覆蓋已經存在的一些值。一些h.chebi_id
字段中有不同的值,並且它們保持不變。它只有它更新的空白字段。並且當它將相同的值插入到具有空白h.name
字段的每一行中時,它將返回1 row(s) affected
。儘管它更新了幾百行。
繼承人我的意思: 它沒有更新,裏面有數據,即使數據是什麼它所有的空行與更新不同的行。
告訴我們也在其他表 –
更新:新增表2至原來的職位。 –
它只更新了一行,因爲這是它可以找到的所有匹配行對。刪除'SET'子句,將'UPDATE'替換爲'SELECT * FROM'來查看匹配的行。 – axiac