共計 1096 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 MySql 如何通過查詢結果集更新數據,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
表結構
現在有用戶表和用戶實名認證表,user_info,user_card。user_info 中的字段有 user_id,user_name。user_card 中的字段有 user_id,user_card,user_name。其中 user_name 為用戶實名認證的信息,user_info 中做了字段冗余。
問題
用戶表 user_info 中的 user_name 和 user_card 中的 user_name 不同步。user_card 中有值,user_info 中沒有值。需要將 user_card 中的 user_name 同步到 user_info 中去。
解決方法
1. 通過代碼查詢出 user_info 中 user_name 為空的數據 , 然后通過 user_id 查詢出用戶實名認證的數據進行同步。
select user_id from user_info where user_name =
select * from user_card where user_id in (上面的結果集) ;
通過代碼更新數據
2. 聯表查詢后更新數據
SELECT
c.user_id ,
c.user_name
FROM
user_info AS u
LEFT JOIN user_card AS c ON u.user_id = c.user_id
WHERE
u.user_name =
通過代碼更新數據
3. 通過 MySql 內聯更新數據
先寫出更新語句
UPDATE `user_info` as u SET u.user_name = 結果集
再獲取條件結果集
SELECT
c.user_id ,
c.user_name
FROM
user_info AS u
LEFT JOIN user_card AS c ON u.user_id = c.user_id
WHERE
u.user_name =
最后內聯更新
UPDATE `user_info` as u
INNER JOIN
SELECT
c.user_id ,
c.user_name
FROM
user_info AS u
LEFT JOIN user_card AS c ON u.user_id = c.user_id
WHERE
u.user_name =
) as r ON u.user_id = r.user_id SET u.user_name = r.user_name ;
關于 MySql 如何通過查詢結果集更新數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!
正文完