在 MySQL 中同時更新多個表格
使用關聯式資料庫時,可能需要同時更新多個資料表中的相關資料。如果使用標準更新語句,這會帶來挑戰,因為它們一次只能修改一個表。
考慮以下場景,其中兩個表(Table_One 和 Table_Two)需要相同的更新以實現非規範化目的。雖然每個表的更新查詢幾乎相同,但它們在表名稱和欄位可用性方面有所不同。
單獨更新
傳統上,這些更新將單獨執行:
UPDATE Table_One SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 AND lid = 1 LIMIT 1; UPDATE Table_Two SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 LIMIT 1;
多表更新
但是,MySQL 提供了更有效率的多表更新解決方案。透過在公用欄位(在本例中為「userid」)上連接資料表,可以使用單一查詢更新兩個資料表:
UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid) SET a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200, b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1;
需要注意的是,多表更新確實不支援LIMIT 子句,如果使用不小心,可能會導致意外更新。在某些情況下,替代解決方案(例如預存程序或事務)可能更合適。
以上是如何在 MySQL 中同時更新多個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!