如何在不使用Exists关键字的情况下编写等价查询,以便将其翻译为关系代数



我有一个查询:

select daa.*
from Dataa daa
where not exists (select row() from Stuff)

基本上,当Stuff中有数据时,查询不会返回任何结果。但是,当Stuff为空时,查询会返回Dataa中的所有内容。我需要用相同的行为重写这个查询,但没有exists关键字,这样我就可以将它翻译成关系代数。

我看过的一些资源是:

将NOT IN转换为NOT EXISTShttp://mlwiki.org/index.php/Translating_SQL_to_Relational_Algebra#EXISTS_in_the_Where_Clause_.28by_example.29

如果没有Exists,几乎没有什么方法可以写它

select daa.*
from Dataa daa
where (select 1 from Stuff limit 1) is null
select daa.*
from Dataa daa
where (select count(*) from Stuff) = 0
select daa.*
from Dataa daa
left outer join (select 1 one1 from Stuff)j on 1=1
where j.one1 is null

但我不知道这个关键词到底有什么问题。

最新更新