2

考虑以下关系

Userfile: [id, account_id, file_id, ...]
                              |
                              v
                       File: [id, key, ...]

文件在服务器上只存储一次以节省空间,如果用户创建一个File(可能已经存在),它会被Userfile.

现在,当引用它的每一行都被删除时,我想防止Files 被孤立。Userfile

在 Postgres 中检测此类孤立行的最有效方法是什么?

4

2 回答 2

4
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
)

两者都会检测到孤儿,但第二个可以更快。

于 2013-05-16T13:10:43.000 回答
1

试试这个

SELECT
  f.id
FROM File f
LEFT JOIN Userfile u
  ON u.file_id = f.id
WHERE 
  u.file_id IS NULL
于 2013-05-16T13:11:54.007 回答