前言
相信大家在日常使用mysql,可能會遇到需要同時更新兩張表時,我會采用在同一個事務中使用2句sql語句分別進行更新。其實,這種需要發送2句sql語句的方法效率相對來說是比較低的,有沒有只用1句sql語句就可以完成這個操作的呢?
答案是有的,下面將是代碼記錄:
假設有2張表:
1,user表,字段為:id,user_name
2,user_role表,字段為:id,role_name,user_id
關聯關系是 user.id = user_role.user_id
現要更改某一條user表的數據的的user_name字段以及該user對應的user_role表中的數據的role_name字段,那么用下面的sql就可以實現這個目的了:
1
2
3
|
update user , user_role set user .user_name = ?, user_role.role_name = ? where user .id = ? and user .id = user_role.user_id |
上面寫到聯表更新,那么有沒有聯表刪除呢?
答案也是有的,下面將是代碼記錄:
假設有2張表:
1,user表,字段為:id,user_name
2,user_role表,字段為:id,role_name,user_id
關聯關系是 user.id = user_role.user_id
現要刪除某一條user表的數據以及該user對應的user_role表中的數據,那么用下面的sql就可以實現這個目的了:
1
2
|
delete u, u_r from user u, user_role u_r where u.id = ? and u.id = u.user_id |
上述sql中,u是user的別名,u_r是user_role的別名,from語句前面要附上別名,這個別名適用于指定刪除哪張表數據的,如果只有u或者u_r,那么僅刪除對應的那張表上的數據。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
原文鏈接:https://www.juwends.com/tech/mysql/mysql_join_delete.html