4

我正在尝试从 h2 数据库(版本 1.0.71)中删除记录,但出现查询语法错误。我执行的查询是:

DELETE FROM TABLE_NAME WHERE QUERY_FIELD LIKE '%somevalue%' LIMIT 1000;

我收到的错误消息是(这对我没有太大帮助):

Syntax error in SQL statement DELETE FROM TABLE_NAME WHERE QUERY_FIELD LIKE '%somevalue%' LIMIT[*] 1000;

LIMIT部分似乎是问题所在,这在 h2 1.0.71 中不支持吗?

当我执行类似的SELECT查询时:

SELECT * FROM TABLE_NAME WHERE QUERY_FIELD LIKE '%somevalue%' LIMIT 1000;

它给了我预期的结果。是LIKELIMIT可能有问题的组合吗?

4

4 回答 4

2

您可以像这样SELECTWHERE子句中添加一条语句:

DELETE
FROM TABLE_NAME
WHERE QUERY_FIELD LIKE '%somevalue%'
AND id_field IN (SELECT id_field
                   FROM table_name
                  WHERE QUERY_FIELD LIKE '%somevalue%'
                  LIMIT 1000)
于 2013-03-19T12:55:15.060 回答
1

此解决方案甚至适用于旧版本的 H2:

DELETE FROM TABLE_NAME 
WHERE QUERY_FIELD LIKE '%somevalue%' 
AND ROWNUM() < 1000;
于 2013-03-20T15:07:37.680 回答
0

升级到 H2 的更新版本,然后LIMIT像以前一样使用。

您使用的 H2 版本 (1.0.71) 大约有 5 年历史,不再受支持。要升级,请生成一个 SQL 脚本(使用SCRIPT语句),然后执行该脚本。

于 2013-03-19T15:27:27.867 回答
0

尝试

DELETE TOP 1000 FROM TABLE_NAME WHERE QUERY_FIELD LIKE '%somevalue%';
于 2013-03-19T12:56:29.883 回答