SQL 中 exists 和 not exists 的用法

Usage of exists and not exists in SQL

SQL 代码片段 #1:

select *  
from customer 
where exists (select null) 
order by residence desc; 

SQL 代码片段 #2:

select customer_id, customer_name  
from customer
where exists (select customer_id 
              from customer 
              where residence = 'los angeles'
                and age > 20 and age < 40);

enter image description here

enter image description here

两个查询 return table 中的所有行。我不明白其中的区别。有人可以解释这是为什么吗?

另外请简述 existsnot exists 的作用。

谢谢

如果子查询return至少有一行,EXISTS 的结果为真。如果子查询return没有行,则EXISTS的结果为false。

https://www.postgresqltutorial.com/postgresql-exists/

两个序列都至少返回 1 行并且主查询没有过滤器,所以两个主查询 return 所有行

  • 选择空 -> 1 行

  • select customer_id 来自客户 居住地 = 'los angeles' 并且年龄 > 20 岁并且年龄 < 40 岁 -> 一些行

如果您想 select 一个子集,只需在主查询中使用 where,无需使用出口。