天天看点

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

工作遇到的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字段

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

user表的name字段

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍
## 更新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
           

执行结果

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

ps: 这种批量操作 对数据量大的表会很慢。

三:A表c字段根据a字段进行刷数

demo表count字段 要统计names有多少个名字

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

查询sql

select *,IF
	((
			LENGTH( names )- LENGTH(
			REPLACE ( names, ',', '' )) + 1 
			) IS NULL,
		0,(
			LENGTH( names )- LENGTH(
			REPLACE ( names, ',', '' )) + 1 
		)
	)  
	from demo
           

查询结果:

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

更新sql

## 统计每行数据有多少个名字
update demo set count = IF
	((
			LENGTH( names )- LENGTH(
			REPLACE ( names, ',', '' )) + 1 
			) IS NULL,
		0,(
			LENGTH( names )- LENGTH(
			REPLACE ( names, ',', '' )) + 1 
		)
	) ;
           

更新结果

工作遇到的sql问题:A表a字段更新到B表b字段 & A表c字段根据a字段进行刷数一:需求介绍

ps: 仅记录工作中遇到的sql问题,我是渣渣涛,我要努力学习。

继续阅读