删除 table MYSQL 中除前 100 行以外的所有行

Delete all but first 100 rows in table MYSQL

我想知道是否有办法删除 mysql 数据库中 table 中除前 100 行以外的所有内容。这可以使用 phpmyadmin GUI 来完成吗?

我可以建议您使用其他方法吗?让我知道它是否适合你?

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable LIMIT 100;

它将使用前 100 条记录创建新的 table,这样您还可以保留旧 table 的备份。如果你想要它,那么保留它或删除它。

试试这个:

从 table 中删除 id > 0 且 id <101

这将删除从 1 到 100 的记录,除非您创建它的循环..

我猜循环将在存储过程中执行..

是的,有可能,具体取决于您所说的 "first 100"。我假设您有一个自动递增的主键列(例如 id),并且 "first 100" 行将是按该列排序时首先显示的行。如果是这样,要找到前 100 行的最后 id,您可以这样写:

SELECT MAX(m.id) FROM (SELECT id FROM mytable ORDER BY id LIMIT 100) m

现在,您想要删除 id 大于此最大值的任何行,因此您可以编写:

DELETE FROM
  mytable
WHERE
  id > (SELECT MAX(m.id)
        FROM
          (SELECT id FROM mytable ORDER BY id LIMIT 100) m);

这里是 sqlfiddle 演示了 5 行。