为什么无法通过in子查询删除ReplicatedMergeTree引擎的数据
发布于 2 个月前 作者 yankannan 234 次浏览 来自 问答

ReplicatedMergeTree引擎表数据可以通过 alter talbe tablename delete where id in (1,2) 方式删除,但是in后面使用子查询方式无法删除数据,如 alter talbe tablename delete where id in (select id from to_delete_ids); 请问各位大神,有什么解决方案??

2 回复

我本机测试是ok的,是目前最新版18.6.0

JD :) select * from test;

SELECT * FROM test

┌─ORDER_ID─┬─ORDER_NAME─┬─notNullDate─┬─version─┐ │ 111111 │ 汽车 │ 2018-06-06 │ 5 │ └──────────┴────────────┴─────────────┴─────────┘

1 rows in set. Elapsed: 0.002 sec.

JD :) select * from test2;

SELECT * FROM test2

┌─ORDER_ID─┬─ORDER_NAME─┬─notNullDate─┐ │ 111111 │ 汽车 │ 2018-06-06 │ └──────────┴────────────┴─────────────┘ ┌─ORDER_ID─┬─ORDER_NAME─┬─notNullDate─┐ │ 222222 │ 房子 │ 2018-08-07 │ └──────────┴────────────┴─────────────┘

2 rows in set. Elapsed: 0.002 sec.

JD :) alter table test2 delete where ORDER_ID in (select ORDER_ID from test);

ALTER TABLE test2 DELETE WHERE ORDER_ID IN ( SELECT ORDER_ID FROM test )

Ok.

0 rows in set. Elapsed: 0.002 sec.

JD :) select * from test2;

SELECT * FROM test2

┌─ORDER_ID─┬─ORDER_NAME─┬─notNullDate─┐ │ 222222 │ 房子 │ 2018-08-07 │ └──────────┴────────────┴─────────────┘

1 rows in set. Elapsed: 0.002 sec.

你好,非常感谢,问题已经解决! 差不多一个月前18.6.0刚刚出来我就做了升级,之前是只有ReplicatedMergeTree引擎支持删除的,不支持in子查询删除。升级后就可以了,且其他引擎也都支持删除了。

回到顶部