Generic placeholder image
闲敲代码、落灯花
What's past is prologue

联系邮箱:email@hezehua.net


联系QQ:1907330840

座右铭

保持热情,持续学习,每日精进

Mysql 从join的结果来更新本表数据

Mysql 从join的结果来更新本表数据

本文与作者在csdn上的博文【Mysql 从join的结果来更新本表数据】保持同步


在mysql应用中常常需要通过别的表的查询结果来更新本表,但很少会本表的查询结果再来更新本表的,下面就看看从本表查询结果更新本表应该怎么做吧。

表classify:

字段 属性
id int(11)
name string(255)

表production:

字段 属性
id int(11)
classify_id int(11)

现在表classify中新增pro_cnt字段来统计一个分类下的商品数量:

字段 属性
id int(11)
name string(255)
pro_cnt int(11)

新增字段之后,需要初始更新一下pro_cnt的值为当前分类下的商品数量,首先,通过leftjoin查询出每个分类下的商品数

  select count(production.id) pro_cnt from classify 
    left join production on classify.id = production.classify_id

然后将查询结果与classify再做一个连接,并且使用update…set语法做字段你更新:

  update classify inner join 
    (    
        select classify.id, count(production.id) pro_cnt from classify 
        left join production on classify.id = production.classify_id
    ) as tmp
    on using(id)
    set classify.pro_cnt = tmp.pro_cnt
猜你喜欢
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
阅读 124

出现如题错误时,采取以下解决办法: ps -ef | grep mysql #找到运行的mysql进程,kill掉 service mysqld restart #重启mysql进程

远程访问数据库出错的解决办法
阅读 142

案例: 在aws服务器中的项目访问在华为云中的测试服务器的数据库,报错: Access denied for user 'root'@'ec2-XXX-XXX-XXX-XXX.cn-north-1.compute.amazonaws.com.cn' (using password: YES...

Mysql 分组后组内排序按字段取最大或最小的数据
阅读 274

示例: 1、将文章按类型的分组,并获取类型分组中最新的一篇文章 select author,max(`updated_at`) as updated_at from articles group by category_id order by updated_at desc 2、将文章按类...

Mysql 加锁防并发
阅读 356

mysql加锁语句: selct * from table_name where id=1 for update 使用方式以及注意事项: 1、该语句必须在事务中执行才生效 2、如果该语句中的查询未正确使用索引(不一定是主键),则该语句会锁全表 3、如果该语句的查询中索引生效了,只会锁定查询的行...

建库建表设置统一编码
阅读 197

1、 CREATE DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 2、 creat table `table_name` ( `id` int(11) unsigned ...

Mysql执行计划
阅读 133

执行计划就是sql语句在数据库中的执行情况,一般用于sql性能分析、优化。Mysql中使用explain来查看执行计划: explain select * from student\G; *************************** 1. row *******************...

mysql设置用户权限
阅读 130

1、创建用户: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 2、程序中使用的mysql账号应该遵循最小权限原则,不允许夸库查询,故设置专门的账号供程序使用: grant select,update,delete,inser...

修改mysql密码
阅读 129

下面这种方法适用于知道现有密码修改为新密码的情况: use mysql; update user set `Password`=PASSWORD('新密码') where `User`='root'; FLUSH PRIVILEGES;