A表中存日期和内容两列,每日数据存在重复,当A表的日期累计超过10天时,则清理超过10天的数据,在SQL server 中如何编写?
时间: 2024-02-17 13:05:33 浏览: 9
可以使用以下 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 天乘以出现次数,则删除对应的行数据。注意,使用此语句前应该先备份数据,以防误删。
相关问题
A表中存日期和内容两列,每日数据存在重复,当A表的日期超过10天时,则清理超过10天的数据,在SQL server 中如何编写?
可以使用以下 SQL 语句实现:
```
DELETE FROM A
WHERE date_column < DATEADD(day, -10, GETDATE())
```
其中,`A` 是表名,`date_column` 是存储日期的列名,`DATEADD` 函数计算当前日期往前 10 天的日期,并在 `WHERE` 子句中筛选出该日期之前的行数据,然后将其删除。注意,使用此语句前应该先备份数据,以防误删。
A表中存日期和内容两列,每日数据存在重复,当A表的日期大于10天时,则清理超过10天的数据,在SQL server 中如何编写?
可以使用以下 SQL 语句实现:
```
DELETE FROM A
WHERE DATEDIFF(day, date_column, GETDATE()) > 10
```
其中,`A` 是表名,`date_column` 是存储日期的列名,`DATEDIFF` 函数计算当前日期与该行日期之间的天数差,如果大于 10 天,则删除该行数据。注意,使用此语句前应该先备份数据,以防误删。