A表中存日期和内容两列,每日数据存在重复,当A表的日期累计超过10天时,则清理超过10天的数据,在SQL server 中如何编写?
时间: 2024-02-17 07:05:33 浏览: 31
可以使用以下 SQL 语句实现:
```
WITH CTE AS (
SELECT date_column, COUNT(*) AS cnt
FROM A
GROUP BY date_column
)
DELETE FROM A
WHERE date_column IN (
SELECT date_column
FROM CTE
WHERE DATEDIFF(day, date_column, GETDATE()) > 10 * cnt
)
```
其中,`A` 是表名,`date_column` 是存储日期的列名,使用 `CTE` 子句计算每个日期出现的次数,并在 `WHERE` 子句中计算每个日期的累计天数,如果超过 10 天乘以出现次数,则删除对应的行数据。注意,使用此语句前应该先备份数据,以防误删。
阅读全文