SQL 如何更新符合要求的每第 n 行

SQL How to update every nth row which meets requirement

我有一个 table 如果满足行要求,我想更新每第 n 行的一列数据。
我的 table 有很多列,但关键是 Object_Id(如果这对创建临时文件有用 table)
但是我要更新的是 online_status,它看起来像下面,但在更大的范围内,所以我通常有 10 行具有相同的时间,但它们都有 %Online%,总共大约 2000 行(在线和大约另外 2000 个离线)。我只需要更新这 10 行中每 2-4 行重复的内容。
Table 图片在这里:(由于某些原因 table 格式不正确)
Table

所以我尝试的是:
这会提取符合在线条件的每第 3 条记录的列表,我只需要一种方法来更新它,但无法通过它。

SELECT * FROM (SELECT *, row_number() over() rn FROM people 
WHERE online_status LIKE '%Online%') foo WHERE online_status LIKE '%Online%' AND foo.rn % 3 =0

我也试过的是:
然而,这已经更新了每一行。不是我需要的。

UPDATE people 
SET online_status = 'Offline 00:00-24:00' 
WHERE people.Object_id IN
(SELECT *
FROM 
(SELECT people.Object_id, row_number() over() rn FROM people 
WHERE online_status LIKE '%Online%') foo WHERE people LIKE '%Online%' AND foo.rn % 3 =0);

有没有办法从上面的 Select 代码中获取列表并简单地更新它,或者 运行 一些可以将它添加到像 temp table 和存储对象 ID 的脚本,如果对象 ID 与临时 table 匹配,下一个脚本将更新主 table。
感谢您的帮助:)

WHERE people.Object_id IN (..)

的子查询中 select 除了 Object_id 之外的其他列
UPDATE people 
SET online_status = 'Offline 00:00-24:00' 
WHERE Object_id IN
( SELECT Object_id
  FROM 
  ( SELECT p.Object_id, row_number() over() rn 
    FROM people p
    WHERE p.online_status LIKE '%Online%') foo
  WHERE foo.rn % 3 = 0
 );