我嘗試更新表的一些列不同的表,現在的我只是找到了如何從一個表中插入一行到另一個,如:如何從一個表更新一行到另一個表?
INSERT INTO dialecte_org_5.tb_data_iae (
SELECT * FROM dialecte_org_88.tb_data_iae WHERE id_dialecte = 2413
);
什麼可能是相同的語句,但更新? 有沒有一種方法,使這樣的事情,如果行存在 - >「更新」,如果沒有「插入」
THX
我嘗試更新表的一些列不同的表,現在的我只是找到了如何從一個表中插入一行到另一個,如:如何從一個表更新一行到另一個表?
INSERT INTO dialecte_org_5.tb_data_iae (
SELECT * FROM dialecte_org_88.tb_data_iae WHERE id_dialecte = 2413
);
什麼可能是相同的語句,但更新? 有沒有一種方法,使這樣的事情,如果行存在 - >「更新」,如果沒有「插入」
THX
對於插入,通常你要指定兩個完整的字段列表INSERT語句和選擇(http://dev.mysql.com/doc/refman/5.5/en/insert.html):
INSERT INTO dialecte_org_5.tb_data_iae (field1, field2, field3)
SELECT field1, field2, field3
FROM dialecte_org_88.tb_data_iae WHERE id_dialecte=2413;
和更新語句更喜歡這個(http://dev.mysql.com/doc/refman/5.0/en/update.html):
UPDATE dialecte_org_5.tb_data_iae t1
INNER JOIN dialecte_org_88.tb_data_iae t2 ON t1.id = t2.id
SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3
WHERE t2.id_dialecte=2413
您還可以使用REPLACE INTO,其中同時做兩,但MySQL的具體的,而不是其他的RDBMS(http://dev.mysql.com/doc/refman/5.0/en/replace.html)支持:
REPLACE INTO dialecte_org_5.tb_data_iae t1
INNER JOIN dialecte_org_88.tb_data_iae t2 ON t1.id = t2.id
SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3
WHERE t2.id_dialecte=2413
的
thx我想我會避免替換,但爲什麼除了列出所有字段的解決方案之外,沒有解決方案?不可能只用主鍵來完成? – krifur
如果您沒有列出這些字段,則它們必須以完全相同的順序排列在同一個字段中。如果您現在編寫的代碼沒有列出字段,稍後可能會更改其中一個表,並且例程會中斷。 –
可能重複[如何更新,如果存在,插入如果不是(又名更新插入或合併)在MySQL?](http://stackoverflow.com/questions/1218905/how-do-i-update-if-exists-insert-if-not-aka-upsert-or-merge-in-mysql) –
thx我要和Doug的解決方案混在一起 – krifur