MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?

本文介绍了一种使用MySQL SQL语句来更新用户关注数量的方法。通过内连接子查询的方式实现行为记录表与用户计数表的数据同步,确保关注数的准确性。

项目中,评论数,关注数等数据,是实时更新的。+1,-1 这种。

有的时候,可能统计不准确。

需要写一个统计工具,更新校准下。


用Java写SQL和函数,代码很清晰,方便扩展,但是太慢了。

为了简单起见,只写sql来统计,然后更新。(不想写存储过程)

语句如下:

#更新一个人的 关注数 followingCount

  1. update behavior_redman_count a  
  2. inner join  
  3. (  
  4. select memberId,count(*) as followingCount from behavior_follow where type = 10  
  5. and isDelete=0 group by memberId   
  6. )b   
  7. set a.followingCount =b.followingCount  
  8. where a.redmanId = b.memberId;  
update behavior_redman_count a
inner join
(
select memberId,count(*) as followingCount from behavior_follow where type = 10
and isDelete=0 group by memberId 
)b 
set a.followingCount =b.followingCount
where a.redmanId = b.memberId;




#MySQL不支持这种语法
  1. update behavior_redman_count  
  2. set followingCount = b.followingCount  
  3. from  
  4. (  
  5. select count(*) as followingCount from behavior_follow where type = 10 and memberId = 198  
  6. and isDelete=0  
  7. )b   
  8. where redmandId = a.memberId and a.memberId= 198;  
update behavior_redman_count
set followingCount = b.followingCount
from
(
select count(*) as followingCount from behavior_follow where type = 10 and memberId = 198
and isDelete=0
)b 
where redmandId = a.memberId and a.memberId= 198;



参考资料

1. Mysql跨表更新 多表update sql语句总结

http://www.jb51.net/article/32648.htm


2.如何将select出来的部分数据update到另一个表里面?

http://bbs.youkuaiyun.com/topics/320233666

数据库操作中,根据一个数据更新一个的字段是一个常见的需求。例如,我们需要根据订单中的价格信息更新库存中对应产品的价格字段。为了解决这类问题,可以使用MySQLUPDATE语句结合JOIN子句或者子查询来实现。这里,推荐查看《Mysql 根据一个数据更新一个的某些字段(sql语句)》来获得具体的操作指导和示例SQL语句。具体步骤如下: 参考资源链接:[Mysql 根据一个数据更新一个的某些字段(sql语句)](https://wenku.youkuaiyun.com/doc/6401acc5cce7214c316ed13d?spm=1055.2569.3001.10343) 1. 确定要更新的目标和源。在我们的例子中,目标可能是`inventory`(库存),源是`orders`(订单)。 2. 确定更新的字段。假设我们要更新`inventory`中的`price`字段。 3. 使用UPDATE语句结合JOIN或者子查询。这里提供一个使用JOIN的示例: ```sql UPDATE inventory AS i INNER JOIN orders AS o ON i.product_id = o.product_id SET i.price = o.price WHERE i.product_id = o.product_id AND o.order_date >= '2023-01-01'; ``` 在这个示例中,我们假设`product_id`是两个共有的字段,用于连接,并且我们只更新订单日期在2023年1月1日之后的记录。 4. 检查WHERE子句。确保WHERE子句正确地限制了更新的范围,以避免不必要的数据更新。 5. 执行并验证更新。在执行更新之前,可以先执行SELECT语句来查看预期的更新结果。更新后,再次检查数据确保更新符合预期。 6. 异常处理和日志记录。在生产环境中,还需要考虑异常处理和记录操作日志,以便于问题追踪和数据恢复。 通过上述步骤,你可以有效地根据一个数据更新一个中的特定字段。对于希望深入学习更关于MySQL数据更新技巧的朋友,建议详细阅读《Mysql 根据一个数据更新一个的某些字段(sql语句)》,这份资料将提供更的示例和高级用法,帮助你更全面地掌握MySQL更新操作。 参考资源链接:[Mysql 根据一个数据更新一个的某些字段(sql语句)](https://wenku.youkuaiyun.com/doc/6401acc5cce7214c316ed13d?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值