在下表中,如果同一组织的总记录数超过500,我想将delete设置为true,并且我想根据createdate执行此操作,这样如果记录数超过500,则删除旧记录,并使该组织的总记录数达到500。
这是我的table
Table A
+----+-------+------------------+--------+------------+
| id | orgid | transactionvalue | delete | createdate |
+----+-------+------------------+--------+------------+
| 1 | 1 | 123 | false | 05-16-2020 |
| 2 | 1 | 412 | false | 07-16-2020 |
| 3 | 2 | 762 | false | 07-16-2020 |
+----+-------+------------------+--------+------------+
这是我要问的问题
update A
set
delete = true
where orgid = 1
and (select count(*) as records
from (select *
from A order by createdate
) as pseudotable)) >500
3条答案
按热度按时间mxg2im7a1#
使用子查询和联接更新
xggvc2p62#
你可以用
row_number()
要查找每个组织的第500条记录,然后使用该信息:von4xj4u3#
我没有尝试所有其他的答案,他们可能是正确的,但这是我的工作