考虑以下关系
Userfile: [id, account_id, file_id, ...]
|
v
File: [id, key, ...]
文件仅在服务器上存储一次以节省空间,如果用户创建File
(可能已存在),则Userfile
引用该文件。
现在,我想阻止File
被隔离,当引用它的每个Userfile
行都被删除时。
在Postgres中检测此类孤立行的最有效方法是什么?
答案 0 :(得分:2)
select f.*
from
file f
left join
userfile u on f.id = u.file_id
where u.file_id is null
select f.*
from file f
where not exists (
select 1
from userfile u
where u.file_id = f.id
)
两者都会检测到孤儿,但第二种可以更快。
答案 1 :(得分:0)
试试这个
SELECT
f.id
FROM File f
LEFT JOIN Userfile u
ON u.file_id = f.id
WHERE
u.file_id IS NULL