2017-09-05 28 views
0

我在mysql数据库中有大约110,000,000个条目。我想将其限制为恰好1亿个条目。我怎么想这样做的是分三个步骤:如何删除超过一定数量的数据库中的条目

  1. 创建新表
  2. 插入到具有INSERT...SELECT...LIMIT 100000000新表。
  3. 删除旧表并重命名新表。

有没有办法用DELETE查询来做到这一点?

回答

0

也许最好的办法是有两个疑问:第一,得到计数,然后删除正确的行数。例如:

SELECT COUNT(*) FROM t 
/* 110,000,000 */ 
DELETE FROM t LIMIT 10000 /* (110,000,000 - 100,000,000 = 10,000) */ 
1

如果你知道确切的数字,你可以删除行:

delete t from t 
    limit 10000000; 

但是,它可能是更快地使用你的方法。

+0

上面会删除100M行,还是保留100M行? – David542

+0

以上将删除10,000,000行。 –

+1

@ David542但是,删除哪些行是任何人的猜测 – Strawberry

0

不知道这是否会工作,但它听起来像这是你想要的东西:

DELETE FROM tbn_name LIMIT 100000000 - (SELECT COUNT(*) FROM tbl_name)

+0

不适合我。 – David542

+0

你能更具体吗?你有错误吗?其他一些消息?最终的结果是什么? – kmoser

相关问题