更新具有相同值的多個表
查詢注意事項:
目標是目標更新兩個表,Table_One 和Table_Two,根據特定條件(即userid),特定列(即win、streak 和Score)具有相同的值。然而,這些表格有一些差異:Table_Two 缺少 cover 字段,它們的名稱有所不同。
多表更新方法:
MySQL 提供了執行多表的靈活性- 透過單一查詢更新表。此方法利用聯接的強大功能來根據公共列關聯表,從而能夠同時更新參與表中的多行。
更新的查詢:
<code class="sql">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;</code>
在這個多表更新查詢中:
限制與替代方案:
需要注意的是,多表更新不支援 LIMIT。因此,查詢可能會更新比預期更多的行。因此,事務或預存程序可能是更合適的解決方案,以確保兩個更新都以原子方式執行。
以上是如何在 MySQL 中更新具有相同值的多個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!