工作遇到的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問題,我是渣渣濤,我要努力學習。