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设置用户权限
阅读 3431、创建用户: 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命令
阅读 3101、显示表中所有列的详细信息 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的解决办法
阅读 3671、在配置文件添加: innodb_force_recovery = 1; 2、重启mysql服务:service mysqld restart 3、登陆mysql,导出数据库 4、删除ibdata1、ib_logfile0、ib_logfile1文件和databasename(数据库...
Mysql 加锁防并发
阅读 572mysql加锁语句: selct * from table_name where id=1 for update 使用方式以及注意事项: 1、该语句必须在事务中执行才生效 2、如果该语句中的查询未正确使用索引(不一定是主键),则该语句会锁全表 3、如果该语句的查询中索引生效了,只会锁定查询的行...