Java 如何使用h2中的一个查询删除重复项

Java 如何使用h2中的一个查询删除重复项,java,h2,hsqldb,Java,H2,Hsqldb,我需要删除特定字段的重复记录(instrument\u id),只保留id的第一条记录 使用MySQL示例,此查询如下所示: DELETE t1 FROM instrument_bit_detail t1, instrument_bit_detail t2 WHERE t1.id > t2.id AND t1.instrument_id = t2.instrument_id; 创建表的示例: CREATE TABLE `instrument_bit_detail` ( `id` bi

我需要删除特定字段的重复记录(
instrument\u id
),只保留
id
的第一条记录

使用MySQL示例,此查询如下所示:

DELETE t1 FROM instrument_bit_detail t1, instrument_bit_detail t2
WHERE t1.id > t2.id AND
t1.instrument_id = t2.instrument_id;
创建表的示例:

CREATE TABLE `instrument_bit_detail` (
  `id` bigint(20) NOT NULL,
  `instrument_id` bigint(20) NOT NULL,
  `modification_time` datetime DEFAULT NULL
)
但是,当使用H2hsqldb数据库时,无法执行此查询,表明存在语法错误


是否有类似于上述查询的方法来完成重复删除,但这样就可以在h2hsqldb数据库上完成重复删除?

像这样的简单查询应该可以做到:

DELETE FROM instrument_bit_detail t1
WHERE t1.id > (SELECT MIN(t2.id) FROM instrument_bit_detail t2 WHERE t1.instrument_id = t2.instrument_id )
编辑: 由于您似乎有一些语法错误,下面是我在h2 web控制台(1.4.200版)上测试的内容

创建表 用数据填充表 选择输出 运行删除 选择删除后的输出
CREATE TABLE instrument_bit_detail (
  id bigint(20) NOT NULL,
  instrument_id bigint(20) NOT NULL,
  modification_time datetime DEFAULT NULL
);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(1,10, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(2,11, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(3,10, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(4,12, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(5,11, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(6,10, CURRENT_DATE);
insert into instrument_bit_detail(id, instrument_id, modification_time) values(7,12, CURRENT_DATE);
ID      INSTRUMENT_ID   MODIFICATION_TIME  
1       10              2020-12-22 00:00:00
2       11              2020-12-22 00:00:00
3       10              2020-12-22 00:00:00
4       12              2020-12-22 00:00:00
5       11              2020-12-22 00:00:00
6       10              2020-12-22 00:00:00
7       12              2020-12-22 00:00:00
DELETE FROM instrument_bit_detail t1 WHERE t1.id > (SELECT MIN(t2.id) FROM instrument_bit_detail t2 WHERE t1.instrument_id = t2.instrument_id );
ID      INSTRUMENT_ID   MODIFICATION_TIME  
1       10              2020-12-22 00:00:00
2       11              2020-12-22 00:00:00
4       12              2020-12-22 00:00:00