MySQL 中使用 JOIN 刪除子表記錄
在 MySQL 等關聯式資料庫中,刪除記錄可能涉及多個資料表和複雜的關係。一種情況是,您需要根據涉及父表的條件從子表中刪除記錄。
場景:
考慮以下資料庫結構:
目標:
假設您希望透過刪除客戶端本身來刪除與給定客戶端關聯的所有貼文。但是,posts 表不直接引用 client_id。它只引用 project_id。
初始嘗試(無效):
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
解:
為了修正問題並成功刪除帖子,您需要在 DELETE 語句中指定表名 (posts):
<code class="language-sql">DELETE posts FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
此修改後的查詢會根據連接條件明確地將 posts 表作為刪除目標。
以上是如何在 MySQL 中使用 JOIN 從子表中刪除記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!