• 一个MySQL中两表联合update的例子(并带有group by分组)


    内容简介

    本文主要展示了在MySQL中,使用两表联合的方式来更新其中一个表字段值的SQL语句。

    也就是update table1 join table2 on table1.col_name1=table2.col_name1 set col_name1=expr1 [, col_name2=expr2 ...] [where where_definition]的使用方法。

    本例中,关联表中使用了group by分组。

    表字段说明

      t_performance_evaluation表

    first_level_target为一级分类,second_level_target为二级分类,second_star_setting为二级分类的星级值

    third_level_target为三级分类,third_star_setting为三级分类的星级值

    更新需求:

    更新一个二级分类的星级值(second_star_setting),更新值为该二级分类下所有三级分类中取最大的星级值(third_star_setting取最大)

    如上图蓝底部分,将third_star_setting字段的4.5更新到second_star_setting字段(是三条记录都要更新哦)

    update语句

    更新SQL语句如下:

    #更新二级分类星级值(取该二级分类下所有三级分类中最大的星级值)
    UPDATE t_performance_evaluation AS t1
    INNER JOIN ( SELECT second_level_target, MAX( third_star_setting ) AS third_star_setting FROM t_performance_evaluation WHERE second_level_target = '专利申请量' ) t2 
        ON t1.second_level_target = t2.second_level_target 
    SET t1.second_star_setting = t2.third_star_setting 
    WHERE
        t1.second_level_target = '专利申请量';

    结果如下图:

    可以看到,second_star_setting的值(三条记录)都更新成了4.5

  • 相关阅读:
    hdu 1003 dp最大子序列和
    模拟题 (+queue队列知识)
    hdu 1016 DFS
    OSGi 系列(二)之 Hello World
    OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统
    Mina 系列(四)之KeepAliveFilter -- 心跳检测
    Mina 系列(三)之自定义编解码器.md
    Mina 系列(二)之基础
    Mina 快速入门
    Java 8 Optional 类深度解析
  • 原文地址:https://www.cnblogs.com/codecat/p/10935460.html
Copyright © 2020-2023  润新知