This question already has answers here:
Delete all rows except first N from a table having single column
                                
                                    (3个答案)
                                
                        
                                3年前关闭。
            
                    
我想知道是否有一种方法可以删除除mysql数据库表中前100行以外的所有内容。可以使用phpmyadmin GUI完成此操作。

最佳答案

是的,这是可能的,具体取决于您所说的“前100个”。我假设您有一个自动递增的主键列(例如id),并且“前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行。

08-27 10:43