千家信息网

MySql如何通过查询结果集更新数据

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章将为大家详细讲解有关MySql如何通过查询结果集更新数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。表结构 现在有用户表和用户实名认证表,user_i
千家信息网最后更新 2024年11月30日MySql如何通过查询结果集更新数据

这篇文章将为大家详细讲解有关MySql如何通过查询结果集更新数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

表结构

   现在有用户表和用户实名认证表,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如何通过查询结果集更新数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0