DELETE
用于删除表中的数据。
注意事项
执行
DELETE
命令时,表中必须存在主键。DELETE
暂不支持使用表的别名。不建议通过
DELETE
命令删除全表、全分区的数据,建议使用TRUNCATE TABLE
、TRUNCATE 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;