HSQLDB 和 SQuirreL 中的批量删除
Posted
技术标签:
【中文标题】HSQLDB 和 SQuirreL 中的批量删除【英文标题】:Batch delete in HSQLDB and 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 记录时出现堆错误,所以我想将删除分成更小的部分。
【问题讨论】:
【参考方案1】:As documented in the manual HyperSQL 支持LIMIT
语句用于DELETE
所以只要运行这个直到没有行被删除:
DELETE FROM HISTORY
WHERE HISTTYPE = 14
LIMIT 1000;
不要忘记提交或在自动提交模式下运行
【讨论】:
不是我想要达到的目标。我知道LIMIT
,我可以用rownum 实现同样的效果。我正在尝试在 HSQLDB 中创建一个循环,因此我不必手动运行该语句 100 次甚至 1000 次。以上是关于HSQLDB 和 SQuirreL 中的批量删除的主要内容,如果未能解决你的问题,请参考以下文章