您可以使用DELETE语句删除表中符合条件的行。

语法

下述DELETE语句表示从 tbl_name中删除满足where_condition的行,并返回删除的行数;若没有WHERE条件,将删除表中所有的数据。

  • 单逻辑表
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM [schema_name.]tbl_name
        [WHERE where_condition]
  • 多逻辑表
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM [schema_name.]tbl_name[.*] [, [schema_name.]tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]           
说明
  • DELETE支持如下修饰符:
    • 若设置LOW_PRIORITY,DELETE操作将在该表没有任何读操作之后执行。
    • 若设置IGNORE,则会忽略删除过程中产生的错误。
    • QUICK,与MySQL存储引擎相关,详情请参见MySQL文档
  • DELETE语句中的修饰符均会原样下推至存储层MySQL,不会对PolarDB-X的修饰符操作产生影响。

语法限制

与原生MySQL的DELETE语法相比,PolarDB-X的DELETE语法存在以下限制。

默认禁止删除行数超过10000的不可下推的DELETE,需要通过HINT打开限制,例如:

DELETE FROM t1 ORDER BY name LIMIT 10001;
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.name LIMIT 10001;
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.name LIMIT 10001;
说明 t1、t2和t3的拆分键均为ID。