首页 > 解决方案 > 更新列如果 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) > 1status = 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

标签: mysqlsqlsql-server

解决方案


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

推荐阅读