DELETE用于删除表中的数据。

注意事项

  • 执行DELETE命令时,表中必须存在主键。

  • DELETE暂不支持使用表的别名。

  • 不建议通过DELETE命令删除全表、全分区的数据,建议使用TRUNCATE TABLETRUNCATE TABLE PARTITION命令,详情请参见TRUNCATE TABLE

  • 删除多表数据时,一条SQL语句只能删除一张表,不支持同时删除多张表。

语法

单表删除是指查询一个表,并删除满足WHERE子句指定条件的数据。多表删除是指单个SQL语句进行多表关联查询,并在一个表中删除满足WHERE子句指定条件的数据。

单表删除

DELETE FROM table_name
[ WHERE condition ]        

多表删除

重要

仅3.2.0.0及以上内核版本的集群支持多表删除。

  • 查看企业版湖仓版集群的内核版本,请执行SELECT adb_version();。如需升级内核版本,请联系技术支持。

  • 查看和升级数仓版集群的内核版本,请参见查看和升级版本

DELETE table_name1
FROM table_name1 [INNER JOIN | LEFT JOIN | RIGHT JOIN] table_name2 ON table_name1.column1 = table_name2.column1
[WHERE where_condition]

示例

  • 删除customer表中name张三的数据。

    DELETE FROM customer WHERE customer_name='张三';                  
  • 删除customer表中的多行。

    DELETE FROM customer WHERE age<18;                
  • 在customer表中,查询并删除id与orders表中id相同,且age为18的数据。

    DELETE customer FROM customer JOIN orders ON customer.id = orders.id WHERE customer.age = 18;