gpt4 book ai didi

postgresql - 如果关联的加入条目不存在,则删除记录

转载 作者:行者123 更新时间:2023-11-29 14:35:45 25 4
gpt4 key购买 nike

如果父表记录不存在,我正在尝试从表中删除记录。

有问题的表是 merchantsmerchant_configurations

merchant_configurations 有一个外键(merchant_id) 引用商家表主键 (id)

这是 2 个表的样子

== merchant_configurations
id integer
merchant_id integer
config_options hstore

商家表

== merchants
id integer
name string

现在,选择查询以检索其商家记录被删除的所有那些 merchant_configurations 记录,如下所示

select merchant_configurations.id from merchant_configurations LEFT JOIN merchants ON merchant_configurations.merchant_id = merchants.id where merchants.id IS NULL

现在,我基本上想要删除所有这些记录,但出于某种原因

DELETE merchants_configurations from select merchant_configurations.id from merchant_configurations LEFT JOIN merchants ON merchant_configurations.merchant_id = merchants.id where merchants.id IS NULL 

好像不行。

我设法使用 WITH 子句完成它的唯一方法。

WITH zombie_configurations AS (
select merchant_configurations.id from merchant_configurations LEFT JOIN
merchants ON merchant_configurations.merchant_id = merchants.id where
merchants.id IS NULL
)

DELETE from merchant_configurations where id IN (select id from zombie_configurations);

现在我的问题是:

是否可以使用正常方式删除记录而不必执行 WITH 子句和其他内容

最佳答案

使用NOT EXISTS,简单高效:

SELECT FROM merchant_configurations mc
WHERE NOT EXISTS (SELECT 1
FROM merchants m
WHERE mc.merchant_id = m.id);

关于postgresql - 如果关联的加入条目不存在,则删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45007359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com