05-delete-data.mdx 1.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
---
sidebar_label: 删除数据
description: "删除指定表或超级表中的数据记录"
title: "删除数据"
---

删除数据是 TDengine 提供的根据指定时间段删除指定表或超级表中数据记录的功能,方便用户清理由于设备故障等原因产生的异常数据。
注意:本功能只在企业版中提供,如需此功能请点击下面的链接访问[企业版产品](https://www.taosdata.com/products#enterprise-edition-link)


**语法:**

```sql
DELETE FROM [ db_name. ] tb_name [WHERE condition];
```

**功能:** 删除指定表或超级表中的数据记录

**参数:**
   
- db_name   可选参数,指定要删除表所在的数据库名,不填写则在当前数据库中
- tb_name   必填参数,指定要删除数据的表名,可以是普通表、子表,也可以是超级表。
- condition 可选参数,指定删除数据的过滤条件,不指定过滤条件则为表中所有数据,请慎重使用。特别说明,这里的where 条件中只支持对第一列时间列的过滤,如果是超级表,支持对tag列过滤。

**特别说明:**
      
数据删除后不可恢复,请慎重使用。为了确保删除的数据确实是自己要删除的,建议可以先使用 select 语句加 where 后的删除条件查看要删除的数据内容,确认无误后再执行 delete 命令。      

**示例:**
    
meters 是一个超级表,groupid 是 int 类型的 tag 列,现在要删除 meters 表中时间小于 2021-10-01 10:40:00.100 且 tag 列 groupid 值为 1 的所有数据,sql 如下:

```sql
delete from meters where ts < '2021-10-01 10:40:00.100' and groupid=1 ;
```

执行后显示结果为:

```
Deleted 102000 row(s) from 1020 table(s) (0.421950s)
```

表示从 1020 个子表中共删除了 102000 行数据