Hologres delete from public.cnpldw_dct_waybill_trace_f_1
where exists (select 1 from public.cnpldw_dct_waybill_trace_f_1_tmp b where bill_id=b.bill_id and status=b.status); 我执行的是这个语句,结果把主表全清了。tmp表里面就6万,主表2个亿,我看了逻辑是没问题的。唯一的问题是exists里面没有给主表加个别名。导致主表全清了。这个语法在mysql会报错。但是pg这个就直接过了。 这算不算bug?
Hologres 这个语法在mysql会报错。但是pg这个就直接过了。 这算不算bug?[阿里云]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
这个语法在MySQL中会报错,因为MySQL不支持在EXISTS子句中使用表的别名。但是,在PostgreSQL中,这个语法是允许的,所以您在Hologres上执行这个语句时没有遇到问题。
如果您希望在MySQL中实现类似的功能,可以使用以下方法:
以下是相应的MySQL代码示例:
这个sql不写别名也是正常的语法,不会报错。问题应该是你join了多少主表的数据然后就被删除了。 ,此回答整理自钉群“实时数仓Hologres交流群”