如何在MySQL上一次删除一系列记录?
我的桌子上有超过60000行。如何一次删除40000到50000行?您可以使用如何在MySQL上一次删除一系列记录?,mysql,sql,Mysql,Sql,我的桌子上有超过60000行。如何一次删除40000到50000行?您可以使用介于之间的功能: delete from exampleTable where id between 40000 and 50000 或: delete from exampleTable,其中id>=40000且id我假设您希望根据表的默认顺序执行此操作,并且您没有自然键或其他方式在表数据中对其进行排序 例如,SELECT*FROM WORDS返回: Hi Hello Bye Goodbye What's up
介于之间的功能:
delete from exampleTable where id between 40000 and 50000
或:
delete from exampleTable,其中id>=40000且id我假设您希望根据表的默认顺序执行此操作,并且您没有自然键或其他方式在表数据中对其进行排序
例如,SELECT*FROM WORDS
返回:
Hi
Hello
Bye
Goodbye
What's up
所以,如果您说要删除第2到第4行,是否要删除Hello、Bye和再见。对吧?
您的桌子的退货顺序是确定的吗?换句话说,你每次都能以相同的顺序得到结果吗?理想情况下,您将能够在表中标识一列,其中包含可以键入的数据,这将允许您使用Tricker的答案
如果这不是真的,那么您将需要在BEVERY语句中使用行号。我不是mysql用户,如果我是,下面的代码无疑会更干净。此外,我甚至没有mysql数据库来测试查询。我用这篇文章编写了一条sql语句,作为如何在mysql中获取行数的参考
我的查询假设您的表上有某种主键。如果没有,就无法保证不会删除无关的行,而且这是一种很好的表设计
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);
如果您没有主键并希望按行数(即行范围)删除,
可以通过mysql导出导入来完成。
执行自定义导出-指定起始行和计数。
在本例中,您需要两个导出:一个用于0-40k行,第二个用于最后50行。
然后将这两个文件导入表中。
注意:如果导入大文件有问题,我建议使用BigDump 表格:杂货店
id item
----------
1 rice
2 soap
3 rice
4 rice
从“杂货店”中删除,其中item=“rice”限制2
这比所有其他想法都容易。对于此特定项目,有2条记录可以删除
答案是,
2行被删除。
从杂货店选择*
行是否有自动递增键?是否有顺序ID?这张桌子的结构是什么?你试过什么?为什么不能使用一个带范围的简单DELETE?下面是DELETE
命令()的语法,例如:DELETE FROM mytable WHERE colname='XXX';虽然从技术上讲,您可以使用限制
此示例并不充分,但没有订单的限制可能会导致意外结果。3年前提供的可接受答案更适合OPs需求,这个例子根本没有反映OPs的问题。
id item
----------
1 rice
2 soap
3 rice
4 rice
id item
----------
1 rice
2 soap