我桌上的行数超过60000。如何一次删除40000到50000之间的行?
答案 0 :(得分:78)
您可以使用between
功能:
delete from exampleTable where id between 40000 and 50000
或:
delete from exampleTable where id >= 40000 and id <= 50000
很简单?
答案 1 :(得分:3)
我假设您要根据表的默认顺序执行此操作,并且您没有自然键或其他方式在表数据中对这些顺序进行排序。
即。 SELECT * FROM WORDS
返回:
Hi
Hello
Bye
Goodbye
What's up
因此,如果您说要删除第2行到第4行,是否要删除Hello,Bye和Goodbye。对?
表格的退货顺序是否确定?换句话说,每次都以相同的顺序得到结果?理想情况下,您可以在表格中标识一个包含您可以键入的数据的列,这样您就可以使用Tricker的答案。
如果不是这样,则需要使用between语句的行号。我不是一个mysql用户,如果我的话,下面的代码无疑会更清晰。另外,我甚至没有mysql数据库来测试查询。我使用这篇文章将sql语句放在一起,作为如何在mysql中获取行数的参考。 With MySQL, how can I generate a column containing the record index in a table?
我的查询假设您的桌面上有某种主键。如果没有,没有办法保证你不会删除无关的行,加上它的表设计很好。
DELETE FROM YOUR_TABLE
WHERE primarykey =
(SELECT primarykey FROM
(SELECT t.primarykey,
@curRow := @curRow + 1 AS row_number
FROM YOUR_TABLE t
JOIN (SELECT @curRow := 0) r)
WHERE row_number between 40000 and 50000);
答案 2 :(得分:0)
如果您没有主键并想按行数删除,即行范围, 它可以通过mysql导出导入完成。 执行自定义导出 - 指定起始行和计数。 在您的情况下,您将需要两个导出:一个用于行0 - 40k,第二个用于50个最后一个。 然后将这两个文件导入表中。 注意:如果导入大文件有问题,我建议使用BigDump。 http://www.ozerov.de/bigdump/
答案 3 :(得分:0)
表:杂货店
1米 2肥皂 3米饭 4米饭
删除'杂货'WHERE item =“rice”LIMIT 2;
这比所有想法都安静得多。对于此特定项目,可以删除2条记录。
答案是,
删除了2行。
SELECT * FROM杂货店;
1米 2肥皂