H2删除查询限制

时间:2013-03-19 12:52:47

标签: sql h2

我正在尝试从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 个答案:

答案 0 :(得分:2)

您可以在SELECT子句中添加WHERE语句,如下所示:

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)

答案 1 :(得分:1)

即使使用旧版本的H2,此解决方案也应该有效:

DELETE FROM TABLE_NAME 
WHERE QUERY_FIELD LIKE '%somevalue%' 
AND ROWNUM() < 1000;

答案 2 :(得分:0)

尝试

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

答案 3 :(得分:0)

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

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