【问题标题】:Batch delete in HSQLDB and SQuirreLHSQLDB 和 SQuirreL 中的批量删除
【发布时间】:2016-08-29 19:31:09
【问题描述】:

我正在尝试创建一个 sql 语句来删除与某个条件匹配 1000 的记录,但是我尝试的一切都不起作用。例如我尝试过

DECLARE @count int
SET @count = 1000
    DELETE  FROM HISTORY 
    WHERE HISTORYID IN (
        SELECT TOP (@count) HISTORYID
        FROM HISTORY
        WHERE HISTTYPE = 14
    )

但是DECLARE 在 HSQLDB 中不起作用。请有人给我一些关于如何通过 SQL 实现这一点的建议,不想从 java 端这样做。

原因很简单,我在尝试删除 150k 记录时出现堆错误,所以我想将删除分成更小的部分。

【问题讨论】:

    标签: sql hsqldb squirrel-sql


    【解决方案1】:

    As documented in the manual HyperSQL 支持LIMIT 语句用于DELETE

    所以只要运行这个直到没有行被删除:

    DELETE FROM HISTORY
    WHERE HISTTYPE = 14
    LIMIT 1000;
    

    不要忘记提交或在自动提交模式下运行

    【讨论】:

    • 不是我想要达到的目标。我知道LIMIT,我可以用rownum 实现同样的效果。我正在尝试在 HSQLDB 中创建一个循环,因此我不必手动运行该语句 100 次甚至 1000 次。
    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多