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
猜你喜欢
定时备份mysql数据库压缩文件
阅读 368

首先写一个备份脚本: backup.sh #!/bin/bash #设置文件名中的时间格式 date=`date +%Y_%m_%d` #mysqldump命令需使用绝对路径否则无法正确执行 /usr/local/mysql/bin/mysqldump -uusername -pp...

记录第二次遇到ERROR! MySQL server PID file could not be found!
阅读 368

我的云服务器出现好几次ERROR! MySQL server PID file could not be found!错误了,都是突然就数据库崩了,之前都是删除巨大的日志文件、杀mysqld进程、重启就好了,然而这回却没有重启成功,看日志也看不出有效信息,,,,可能是因为水平渣 -。- 手动生...

mysql设置用户权限
阅读 343

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

ERROR! The server quit without updating PID file解决办法
阅读 404

先新建PID文件,并且设置目录权限 再新建sock文件,并且设置目录权限 重启即可 重要的是在my.cnf中设置log_error使之打印日志,然后参考日志去解决错误...

实用mysql命令
阅读 310

1、显示表中所有列的详细信息 show full columns table_name; 2、查看服务器版本 show version(); 3、查看当前登录用户 select current_user(); 4、显示表的详细信息 show table status like;...

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

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

mysql报错Attempted to open a previously opened tablespace的解决办法
阅读 367

1、在配置文件添加: innodb_force_recovery = 1; 2、重启mysql服务:service mysqld restart 3、登陆mysql,导出数据库 4、删除ibdata1、ib_logfile0、ib_logfile1文件和databasename(数据库...

Mysql 加锁防并发
阅读 572

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