我有以下架构,我在加入这些表时遇到了很多麻烦。我试图让所有没有文件的文件夹在过去10分钟内更新。但我想要包含任何没有任何文件的文件夹。
create table folders (
id int,
table_name text
);
create table files (
id int,
folder_id int,
file_name text,
last_updated timestamp with time zone
);
到目前为止我的天真尝试类似于以下内容(这是从CLI重新创建):
Select t.folder_name from folders t
join files f on (f.folder_id = t.id)
where last_updated < 15m
group by t.id
我可以显示所有文件夹或每个文件夹的最新文件,但不能同时显示两者。
非常感谢任何帮助
答案 0 :(得分:1)
像&#34; a没有一些b&#34;通常使用not exists
条件进行翻译:
select fld.*
from folders fld
where not exists (select 1
from files fl
where fl.last_updated >= current_timestamp - interval '10' minute
and fl.folder_id = fld.id);
该子选择也将返回&#34;没有&#34;对于没有任何文件的文件夹,not exists
也适用于他们。