使用DELETE 语句删除数据。

    示例如下:

    假设有如下所示数据的表 t1 和 t2:

    1. obclient> CREATE TABLE t1(c1 int primary key, c2 int);
    2. Query OK, 0 rows affected (0.16 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 1 | 1 |
    8. | 2 | 2 |
    9. | 3 | 3 |
    10. | 4 | 4 |
    11. +----+------+
    12. 4 rows in set (0.06 sec)
    13. obclient> CREATE TABLE t2(c1 int primary key, c2 int) partition BY key(c1) partitions 4;
    14. Query OK, 0 rows affected (0.19 sec)
    15. obclient> SELECT * FROM t2;
    16. +----+------+
    17. | c1 | c2 |
    18. +----+------+
    19. | 5 | 5 |
    20. | 1 | 1 |
    21. | 2 | 2 |
    22. | 3 | 3 |
    23. +----+------+
    24. 4 rows in set (0.02 sec)
    • 单表删除,删除 “c1=2” 的行,其中 c1 列为表 t1 中的 Primary Key。
    1. obclient> DELETE FROM t1 WHERE c1 = 2;
    2. Query OK, 1 row affected (0.02 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 1 | 1 |
    8. | 3 | 3 |
    9. | 4 | 4 |
    10. +----+------+
    11. 3 rows in set (0.01 sec)
    • 单表删除,删除表 t2 中按照 c2 列排序之后的第一行数据。
    1. obclient> DELETE FROM t1 ORDER BY c2 LIMIT 1;
    2. Query OK, 1 row affected (0.01 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 2 | 2 |
    8. | 3 | 3 |
    9. | 4 | 4 |
    10. +----+------+
    11. 3 rows in set (0.00 sec)
    • 单表删除,删除表 t2 的 p2 分区的数据。
    1. obclient> DELETE FROM t2 PARTITION(p2);
    2. Query OK, 3 rows affected (0.02 sec)
    3. obclient> SELECT * FROM t2;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 5 | 5 |
    8. +----+------+
    9. 1 row in set (0.02 sec)
    • 多表删除,删除 t1、t2 表中 “t1.c1 = t2.c1” 的数据。
    1. obclient> DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1;
    2. Query OK, 3 rows affected (0.02 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 4 | 4 |
    8. +----+------+
    9. 1 row in set (0.01 sec)
    10. obclient> SELECT * FROM t2;
    11. +----+------+
    12. | c1 | c2 |
    13. +----+------+
    14. | 5 | 5 |
    15. +----+------+
    16. 1 row in set (0.01 sec)
    • 多表删除,删除 t1、t2 表中 “t1.c1 = t2.c1” 的数据。
    1. obclient> DELETE FROM t1, t2 USING t1, t2 WHERE t1.c1 = t2.c1;
    2. Query OK, 4 rows affected (0.02 sec)
    3. obclient> SELECT * FROM t1;
    4. +----+------+
    5. | c1 | c2 |
    6. +----+------+
    7. | 4 | 4 |
    8. +----+------+
    9. 1 row in set (0.01 sec)
    10. obclient> SELECT * FROM t2;
    11. Empty set (0.01 sec)

    更多DELETE 语句相关的语法说明请参见 DELETE