举个简单的例子,用于讲解双查询。
经典学生表 STUDENT
--如果有20岁以上的学生,则返回,否则查询 20岁及以下的学生
select s.name from STUDENT s where s.age > 20
union all
select s.name from STUDENT s where s.age <= 20
and not exists (
select s.name from STUDENT s where s.age > 20
)
20岁以上的学生 | 20岁及其以下的学生 | 返回结果 |
真 | 假 | 20以上 |
假 | 真 | 20及其以下 |