旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

MySql经由过程查询效果集更新数据的要领引见【MySQL教程】,mysql

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:56评论:0


导读:本篇文章给人人带来的内容是关于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 ;

本篇文章到这里就已悉数完毕了,更多其他精彩内容能够关注ki4网的MySQL教程视频栏目!

以上就是MySql经由过程查询效果集更新数据的要领引见的细致内容,更多请关注ki4网别的相干文章!

标签:mysql


欢迎 发表评论: