工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数
- 一:需求介绍
-
- 二:A表a字段更新到B表b字段
- 三:A表c字段根据a字段进行刷数
一:需求介绍
1:A表a字段更新到B表b字段
将book表的 author字段更新为user表的 name字段,条件是book.id = user.id
2:A表c字段根据a字段进行刷数
demo表的names字段存了多个姓名,用英文逗号分隔开
二:A表a字段更新到B表b字段
book表的author字段

user表的name字段
## 更新book表中的author字段 变成user表中的name
update book set author = (
select name from user where user.id = book.id
)
where book.id in (select id from user )
## 这里 where 条件必须检查下id相同的才更新,不然book表中不在user表的数据,会被更新为null
执行结果
ps: 这种批量操作 对数据量大的表会很慢。
三:A表c字段根据a字段进行刷数
demo表count字段 要统计names有多少个名字
查询sql
select *,IF
((
LENGTH( names )- LENGTH(
REPLACE ( names, ',', '' )) + 1
) IS NULL,
0,(
LENGTH( names )- LENGTH(
REPLACE ( names, ',', '' )) + 1
)
)
from demo
查询结果:
更新sql
## 统计每行数据有多少个名字
update demo set count = IF
((
LENGTH( names )- LENGTH(
REPLACE ( names, ',', '' )) + 1
) IS NULL,
0,(
LENGTH( names )- LENGTH(
REPLACE ( names, ',', '' )) + 1
)
) ;
更新结果
ps: 仅记录工作中遇到的sql问题,我是渣渣涛,我要努力学习。