我想知道是否有办法删除除mysql数据库中的表中的前100行之外的所有内容。可以使用phpmyadmin GUI完成此操作。
答案 0 :(得分:2)
是的,有可能,取决于你的意思是“前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);
以下是显示5行的sqlfiddle。
答案 1 :(得分:1)
我可以建议你替代方法。让我知道它是否适合你?
CREATE TABLE newtable LIKE oldtable;
INSERT newtable SELECT * FROM oldtable LIMIT 100;
它将创建一个包含前100条记录的新表,这样你就可以保留旧表的备份。如果你想要它,那么保留它或删除它。
答案 2 :(得分:0)
试试这个:
从表中删除id&gt; 0和id <101
这将删除1到100的记录,除非你创建它的循环..
循环将在存储过程中执行我猜...