我有桌子:
人员表
ID NAME
1 Matt
2 Josh
文件表
FILE_ID PERSON_ID TYPE
1 1 Photo
2 2 Text
3 2 Text
我想返回所有其他人,这些人在另一张桌子中没有任何具有照片类型的文件。
在上述情况下,我想返回:
ID NAME
2 Josh
最有效的方法是什么?
答案 0 :(得分:4)
我会使用Sequence <- str_replace_all(SequenceRaw,
"(?m)^>[A-Z]{2}\\d{6}\\.?\\d\\h+([a-zA-Z]+(?:-[a-zA-Z]+)?)\\h+([a-zA-Z]+(?:-[a-zA-Z]+)?).*",
"\\1 \\2")
:
not exists
为了提高性能,您希望在select p.*
from person p
where not exists (select 1
from files f
where f.person_id = p.id and f.type = 'Photo'
);
上建立索引。
答案 1 :(得分:2)
我会使用not exists
:
select p.*
from person p
where not exists (select 1 from files f where f.person_id = p.id and f.type = 'photo');
答案 2 :(得分:2)
使用not in
select p.*
from person p
where p.id not in (select id from Files f where f.type = 'photo');