sql - SQL如何更新满足要求的每n行
问题描述
我有一个表,如果它满足行要求,我想在每 n 行更新一个列数据。
我的表有很多列,但键是 Object_Id(以防这可能对创建临时表有用)
但我要更新的是 online_status,它看起来如下所示,但规模更大,所以我通常有 10 行同一时间,但它们都有 %Online% ,总共大约 2000 行(在线和大约另外 2000 行离线)。我只需要更新每 2-4 行重复的 10 行。
这里的表格图片:(由于某种原因表格格式不好)
表格
所以我尝试的是:
这会提取与在线条件匹配的每条第三条记录的列表,我只需要一种更新它的方法,但无法通过它。
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);
有没有办法从上面的选择代码中获取列表并简单地更新它或运行一些脚本,可以将它添加到临时表并存储对象 ID,如果对象 ID 与临时表匹配,下一个脚本将更新主表。
感谢您的任何帮助 :)
解决方案
不要选择其他列,但Object_id
在子查询中WHERE people.Object_id IN (..)
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
);
推荐阅读
- amazon-ec2 - EC2 AWS 系统可达性失败
- nskeyedarchiver - NSKeyedArchiver 我应该如何在 iOS12 中设置路径
- c# - 干净停止运行循环c#等待windows事件的线程
- jdbc - spark jdbc api不能使用内置函数
- c# - Xamarin 3.3.0 表单错误:在 xmlns 中找不到类型 ToolbarItem
- java - 当实现 Predicate 而不是 boolean
- r - 删除 ggplot2 中条形图的 NA 值。
- javascript - 如何计算角度 2+ 中表格列的总和?
- scikit-learn - 管道中的随机森林 - sklearn
- swift - 在一个 ViewController Swift 中使用两个 UITableView