我想创建一个 SQL DELETE
查询,在一个语句中删除除以下内容之外的所有内容:
- 最新记录
- 以及上个月除第一个记录之外的所有记录
在一组记录内。我在这里做了一个 SQL fiddle 示例:http://www.sqlfiddle.com/#!15/2272a
删除的结果应该是,从组og记录(other_table_id = 1
的记录)中,仅剩下的应该是:
('2017-01-02', 1),
('2017-03-24', 1),
('2017-04-03', 1),
('2017-05-24', 1),
('2017-12-14', 1)
这是否可以在一个查询中完成,还是需要在多个查询中完成?
最佳答案
试试这个:
DELETE FROM example_table
WHERE ID NOT IN(
SELECT ID FROM(
select id
,ROW_NUMBER() OVER(PARTITION BY date_part('year',created_at),date_part('month',created_at) ORDER BY ID)Rn
from example_table WHERE other_table_id =1
)D
WHERE RN=1);
SELECT * FROM example_table;
关于sql - DELETE 查询销毁记录组中每月除最近记录和每条第一条记录之外的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49855860/