如何删除 SQL 中的多个 MySql Apache table 行?

How can I delete multiple MySql Apache table rows in SQL?

我在 MariaDB 和 Apache 中使用最新版本的 XAMPP 2018。

我正在执行这个 sql:

 DELETE FROM customer_info 
 WHERE id NOT IN (SELECT MIN(id) FROM `customer_info` GROUP BY `paypal_id`) ;

并收到此错误

 Error
 SQL query: 

 DELETE FROM customer_info WHERE id NOT IN (SELECT MIN(id) FROM `customer_info` GROUP BY `paypal_id`)
 MySQL said: Documentation

 #1093 - Table 'customer_info' is specified twice, both as a target for 'DELETE' and as a separate source for data

我尝试了不同的方法来删除重复的 paypal_id 条目,包括使用 COUNT(*) > 1 这也是 returns 一个错误。

MySQL 不允许您在同一个 table.

DELETESELECT

您可以尝试在 NOT IN 中使用子查询。

DELETE FROM customer_info 
 WHERE id NOT IN (
   SELECT ID FROM (
     SELECT MIN(id) Id
     FROM `customer_info` 
     GROUP BY `paypal_id`
   ) t1
 ) 

View on DB Fiddle

如果您想删除除第一行以外的所有行,或删除行的任何小子集,这是一种更快的方法:

CREATE TABLE new LIKE real;
INSERT INTO new
    SELECT * FROM real WHERE ...;   -- see below
RENAME TABLE real TO old,
             new TO real;
DROP TABLE old;

你的情况:

SELECT * FROM real ORDER BY id LIMIT 1;