MySQL 里用一个表的数据更新另一个表

MySQL的update语句可使用join,在用一个表的数据更新另一个表时十分方便,文中以统计点击数为例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        MySQL 的 update 语句里可以使用 join,这在用一个表的数据更新另一个表时很方便,看下面一个统计点击数的例子:

-- 建立每天点击统计表  
create table daily_hit_counter  
(  
  day  date not null,  
  slot tinyint unsigned not null,  
  cnt  int unsigned not null,  
  primary key (day,slot)  
) engine=innodb;  
  
-- 每次点击更新点击数  
insert into daily_hit_counter(day,slot,cnt) values (current_date,rand()*100,1)  
on duplicate key update cnt=cnt+1;  
  
-- 按天合并统计数,并删除多余行  
update daily_hit_counter as c inner join (select day,sum(cnt) as cnt min(slot) as mslot from daily_hit_counter group by day) as x   
using(day) set c.cnt=if(c.slot=x.mslot,x.cnt,0), c.slot=if(c.slot=x.mslot,0,c.slot);  
delete from daily_hit_counter where slot>0 and cnt=0;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值