DELETE Statement The  DELETE  statement deletes rows from  tbl_name  and returns the number of deleted rows. To check the number of deleted rows, call the  ROW_COUNT()  function described in Section 12.16, “Information Functions” . The conditions in the optional  WHERE  clause identify which rows to delete. With no  WHERE  clause, all rows are deleted. where_condition  is an expression that evaluates to true for each row to be deleted. It is specified as described in Section 13.2.10, “SELECT Statement” . If the  ORDER BY  clause is specified, the rows are deleted in the order that is specified. The  LIMIT  clause places a limit on the number of rows that can be deleted. These clauses apply to single-table deletes, but not multi-table deletes. Multiple-Table Syntax Privileges Performance You need the  DELETE  privilege on a table to delete rows from it. You need only the  SELECT  privilege for any columns that are only read, such as those named in the  WHERE  clause. When you do not need to know the number of deleted rows, the  TRUNCATE TABLE  statement is a faster way to empty a table than a  DELETE  statement with no  WHERE  clause. Unlike  DELETE ,  TRUNCATE TABLE cannot be used within a transaction or if you have a lock on the table. See Section 13.1.37, “TRUNCATE TABLE Statement”  and Section 13.3.6, “LOCK TABLES and UNLOCK TABLES Statements” . The speed of delete operations may also be affected by factors discussed in Section 8.2.5.3, “Optimizing DELETE Statements” . To ensure that a given  DELETE  statement does not take too much time, the MySQL-specific  LIMIT row_count  clause for  DELETE  specifies the maximum number of rows to be deleted. If the number of rows to delete is larger than the limit, repeat the  DELETE  statement until the number of affected rows is less than the  LIMIT  value. You cannot delete from a table and select from the same table in a subquery. DELETE  supports explicit partition selection using the  PARTITION  clause, which takes a list of the comma- separated names of one or more partitions or subpartitions (or both) from which to select rows to be dropped. Partitions not included in the list are ignored. Given a partitioned table  t  with a partition named p0 , executing the statement  DELETE FROM t PARTITION (p0)  has the same effect on the table as Subqueries Partitioned Table Support DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name [.*] [,  tbl_name [.*]] ... FROM  table_references [WHERE  where_condition ] DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM  tbl_name [.*] [,  tbl_name [.*]] ... USING  table_references [WHERE  where_condition ] Main Clauses 2622