从Postgresql中删除记录

问题描述 投票:1回答:1

我需要根据其他两个表上的内连接条件从一个表中删除记录,但是查询会运行很长时间。

DELETE FROM public.blacklist WHERE subject_id NOT IN(
SELECT DISTINCT a.id FROM public.subject a
INNER JOIN stg.blacklist_init b ON a.subject_id=b.customer_code);

任何想法如何实现这一目标?

谢谢。

sql postgresql sql-delete
1个回答
1
投票

您可以使用NOT EXISTS而不是NOT IN,我认为您不需要DISTINCT

DELETE FROM public.blacklist bl
 WHERE NOT EXISTS  (
                     SELECT 0 
                       FROM public.subject a
                      INNER JOIN stg.blacklist_init b 
                         ON a.subject_id=b.customer_code
                      WHERE a.id = bl.subject_id 
                     );
© www.soinside.com 2019 - 2024. All rights reserved.