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日志
阅读 167

1、错误日志(Log Error) 记录Mysql服务器进程在启动/关闭或者运行过程中遇到的错误消息,是工作中排查错误的重要工具。 查询方式: show variables like 'log_error'\G; *************************** 1. row ****...

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

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

定时备份mysql数据库压缩文件
阅读 224

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

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

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

修改mysql密码
阅读 202

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

配置Mysql主从
阅读 175

配置Mysql主从可以做热备、读写分离,是提高网站性能、提高数据安全性的比较有效的方式,而且配置简单,所以笔者在网站因业务逻辑需要大量用到数据库操作而性能不佳时,首先想到要做主从,其实还有别的方案的,比如做缓存,但是做缓存要改代码所以等之后再应用,先把主从给配置了。以下是做Mysql主从的关键步骤...

实用mysql命令
阅读 182

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

Mysql 加锁防并发
阅读 423

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