我有一张桌子,并且有一些重复的内容。
我不想删除重复项,但我想在一些不是最新条目的记录上设置一个指标(最高的reviewid是最新的)
我的表格如下:
ReviewId |ClientID | CommunicationSent
17023| 1950943 | 0
17202| 1950943 | 0
17734| 1950943 | 0
17731| 1948031 | 0
16822| 1948031 | 0
15300| 1948031 | 0
14722| 1945039 | 0
16125| 1945039 | 0
17729| 1945039 | 0
17727| 1943172 | 0
14552| 1943172 | 0
17179| 1943172 | 0
15175| 1943172 | 0
例如,我想将'communicationset'设置为1,其中clientid = 1948031并且它不是最新的,即最高设置的communationid为1,其中reviewid = 16822和15300。
我猜测它将是一个不是maxid(reviewid)的地方。
任何人都知道如何做到这一点?
谢谢,
答案 0 :(得分:2)
我认为应该这样做:
update table1 set CommunicationSent = 1
where reviewid not in (
select max(reviewid) from table1 group by clientid
)
答案 1 :(得分:0)
请尝试:
;with T as(
select *,
ROW_NUMBER() over (partition by ClientID order by ReviewId desc) RNum
from YourTable
)
update T
set CommunicationSent=1
where RNum<>1
答案 2 :(得分:0)
我认为此更新将为您完成:
UPDATE T
SET communicationSent = 1
FROM TABLE T
INNER JOIN (
SELECT MAX(reviewId) AS 'reviewId',
clientID
FROM TABLE
GROUP BY clientID
) T2
ON T.clientId = T2.clientId
AND T.reviewId < T2.reviewId