更新涉及MySQL 中多個聯結的表
在處理涉及多個聯接的複雜資料庫查詢時,更新特定表可能會帶來挑戰。雖然連接的順序可能不會顯著影響效能,但它會影響編寫和讀取查詢的難易程度。
考慮以下範例,其中目標是更新 tableB 表:
UPDATE b FROM tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10;
在上面的查詢中,透過聯接更新 tableB 涉及表 tableA 和 tableC。但是,tableB 並不是 FROM 子句中提到的第一個表。
與 Microsoft SQL Server 不同,MySQL 處理多表更新的方式不同。 UPDATE 語法不需要明確指定要更新的表。相反,SET 子句隱含更新包含被指派新值的資料列的表。
要使用MySQL 語法實作所需的更新,請如下修改查詢:
UPDATE tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val + c.val WHERE a.val > 10 AND c.val > 10;
MySQL 的UPDATE語法可讓您透過使用SET 子句中的欄位名稱來更新不是FROM 子句中第一個表格的表。
以上是如何使用多重連線高效更新 MySQL 中的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!