首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于删除数据块中的数据的MySQL脚本,直到删除了低于id的所有数据为止

用于删除数据块中的数据的MySQL脚本,直到删除了低于id的所有数据为止
EN

Stack Overflow用户
提问于 2012-06-19 17:13:53
回答 2查看 1.7K关注 0票数 0

我需要一个MySQL Skript,它执行以下操作:

删除数据库的区块,直到删除了所有大于10000的link_id

示例:

代码语言:javascript
复制
x = 10000
DELETE FROM pligg_links WHERE link_id > x and link_id < x+10000
x = x + 10000
...

所以它会删除

代码语言:javascript
复制
DELETE FROM pligg_links WHERE link_id > 10000 and link_id < 20000

然后

代码语言:javascript
复制
DELETE FROM pligg_links WHERE link_id > 20000 and link_id < 30000

直到所有id小于10000的id都被删除

我需要这个,因为数据库非常非常大(不仅仅是一场演唱会)

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-19 17:19:03

以下内容中存在什么问题:

代码语言:javascript
复制
DELETE FROM pligg_links WHERE link_id > 10000

还有另一种方法:(只需按顺序执行这3个查询)

代码语言:javascript
复制
Step1 : Insert into pligg_links_temp select * from pligg_links where link_id < 10000;
Step2 : Drop pligg_links;
Step3 : Insert into pligg_links select * from pligg_links_temp
票数 1
EN

Stack Overflow用户

发布于 2012-06-19 17:22:46

您可以使用LIMIT语句来控制一步中要删除的项目数:

代码语言:javascript
复制
DELETE FROM pligg_links
WHERE link_id > 10000
LIMIT 1000;

http://dev.mysql.com/doc/refman/5.1/en/delete.html说:

删除特定于MySQL的LIMIT row_count选项

告诉服务器在将控制权返回给客户端之前要删除的最大行数。这可用于确保给定的DELETE语句不会占用太多时间。您可以简单地重复DELETE语句,直到受影响的行数小于限制值。

如果您希望自动删除,可以使用SELECT ROW_COUNT();确定删除的行数:

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11097925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档