Sql 根据是否为最新条目更新数据库中的表字段
我有一张桌子,里面有一些复制品 我不想删除重复项,但我想在一些不是最新条目的记录上设置一个指示器,最高的reviewid是最新的 我的表格如下:Sql 根据是否为最新条目更新数据库中的表字段,sql,tsql,Sql,Tsql,我有一张桌子,里面有一些复制品 我不想删除重复项,但我想在一些不是最新条目的记录上设置一个指示器,最高的reviewid是最新的 我的表格如下: ReviewId |ClientID | CommunicationSent 17023| 1950943 | 0 17202| 1950943 | 0 17734| 1950943 | 0 17731| 1948031 | 0 16822| 1948031 | 0 15300|
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
例如,我想将“communicationstart”设置为1,其中clientid=1948031,而不是最新的,即,最高的设置communicationId为1,其中reviewid=16822和15300
我猜这将是reviewid不是maxreviewid的地方
有人知道怎么做吗
谢谢,请尝试:
;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
我认为此更新将为您提供:
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
我认为这应该做到:
update table1 set CommunicationSent = 1
where reviewid not in (
select max(reviewid) from table1 group by clientid
)
样本我建议不要。您可以选择最新的值,今天更新的内容明天可能会出错。谢谢@jpw。我相信这项工作,但已经看到了另一个早些时候已经尝试过了。