【问题标题】:Delete first X lines of a database删除数据库的前 X 行
【发布时间】:2012-09-28 14:24:56
【问题描述】:

是否有删除数据库表前 X 行的 SQL 命令?

我有一个包含一些信息但没有 id 或自动递增值的数据库表,以及一个处理该表前 X 行的程序。 之后需要删除这些 X 行。所以标准查询是:

DELETE FROM table WHERE something = value;

那么,有没有一种方法可以构建如下查询:

DELETE FROM table WHERE rownumber <= X;

我试过这个命令,但数据库没有任何反应.. 你有什么线索吗?

【问题讨论】:

    标签: mysql sql-delete


    【解决方案1】:

    在删除时使用LIMIT

    DELETE FROM table WHERE condition LIMIT 10
    

    或者,如果你不想要这个条件

    DELETE FROM table LIMIT 10
    

    请记住,删除行的顺序是不确定的 - 这取决于您的 DBMS 配置和表索引。您应该包含一个ORDER BY,以便按照定义的顺序完成删除,例如ORDER BY id ASC 先删除最低的 ID。

    有关详细信息,请参阅MySQL documentation for DELETE

    【讨论】:

    • 执行此操作时要非常小心。如果您添加索引或类似的东西,选择的顺序可能会改变。当不添加 where 子句时,SQL 服务器会做出最简单的选择。
    • 没错。通常的ORDER BY 要求适用。我已经编辑以反映这一点。
    • 感谢您的回答!我试过这个,不幸的是它只在给定条件时才有效。所以我现在使用DELETE FROM table WHERE a_field &gt; 0 LIMIT X; 这到目前为止有效。谢谢:-)
    • @coroner 你在 MySQL Workbench 中尝试过吗?如果是这样,那是该工具的安全限制,而不是 MySQL 本身的限制。您应该可以在没有条件的情况下删除。仅供参考:StackExchange cmets 中的代码使用反引号,即`some code`
    • @Polynomial:再次感谢您!你解决了我所有的问题 :-) 我确实用 MySQL Workbench 试过了。 ^^
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2016-07-29
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多