mysql - 更新列如果 count(id) 在表中有多个
问题描述
我有一张像下面这样的桌子..
ID CustId CustName Status
1 a1 A NULL
2 a1 A NULL
3 a2 B NULL
4 a3 B NULL
5 a4 C NULL
6 a4 C NULL
7 a5 D NULL
8 a6 E NULL
我想更新status = 2
时间count(custid) > 1
和status = 1
时间count(custid) = 1
,我想通过以下方式输出
ID CustId CustName Status
1 a1 A 1
2 a1 A 2
3 a2 B 1
4 a3 B 1
5 a4 C 1
6 a4 C 2
7 a4 D 2
8 a6 E 1
解决方案
WITH CTE
(
select custid,count(1) cnt
from my_table
group by custid
)
UPDATE a SET a.status= CASE WHEN b.cnt = 1 THEN 1 ELSE 2 END
FROM my_table a
INNER JOIN CTE b
on a.custid=b.custid
推荐阅读
- java - How merge values of Mono in loop?
- xml - 如何使用 XSL 获取特定元素的值
- flutter - 我怎么知道用户是在删除还是在写
- reactjs - 处理 React 重新渲染
- android - 有没有办法根据日/夜模式刷新自定义通知?
- docker - npm + wsl + docker 和卷挂载有什么解决方案?
- applescript-objc - 带有 Applescript 的进度条
- api - 我应该为不同的具体类设置不同的 API 方法吗?
- sql - 如何更新一个主键是另一个表的主键的表?
- c++ - RSA_sign 和 EVP_DigestSignX() 之间的区别