sqlite:选择子查询

时间:2016-09-02 12:17:50

标签: sql sqlite

我正在尝试在文件夹表上准备选择子查询,该子表位于以下列:

workspace_Id
PARENT_ID

我的要求是:

1)我需要特定workspace_id的所有文件夹,例如workspace_id ='xyz'
例如:
select * from folders where workspace_id='xyz'

现在我得到如下结果:

id  workspace_id parent_id
1   xyz          51
2   xyz          44
3   xyz          73 
4   xyz          NULL
5   xyz          90
6   xyz          NULL

2)现在假设数据库中没有51和90。 例如:

select * from folders where workspace_id='xyz' and parent_id=51

select * from folders where workspace_id='xyz' and parent_id=90

我不应该从上面的2个查询中得到任何结果,因为db中没有51和90。

2)棘手的部分:我的要求是只获取那些具有db_中不存在的parent_id的文件夹或null

我很困惑,如果它可能与自联接或子查询就足够了,我应该学习子查询并加入:(

任何帮助将不胜感激!!!

1 个答案:

答案 0 :(得分:1)

使用not exists几乎可以直接翻译您对所需内容的描述:

select f.*
from folders f
where workspace_id = 'xyz' and
      (parent_id is null or
       not exists (select 1 from folders f2 where f2.id = f.parent_id)
      );