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 中的所有行。我不明白其中的区别。有人可以解释这是为什么吗?
另外请简述 exists
和 not exists
的作用。
谢谢
如果子查询return至少有一行,EXISTS 的结果为真。如果子查询return没有行,则EXISTS的结果为false。
https://www.postgresqltutorial.com/postgresql-exists/
两个序列都至少返回 1 行并且主查询没有过滤器,所以两个主查询 return 所有行
选择空 -> 1 行
select customer_id
来自客户
居住地 = 'los angeles'
并且年龄 > 20 岁并且年龄 < 40 岁
-> 一些行
如果您想 select 一个子集,只需在主查询中使用 where,无需使用出口。
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 中的所有行。我不明白其中的区别。有人可以解释这是为什么吗?
另外请简述 exists
和 not exists
的作用。
谢谢
如果子查询return至少有一行,EXISTS 的结果为真。如果子查询return没有行,则EXISTS的结果为false。
https://www.postgresqltutorial.com/postgresql-exists/
两个序列都至少返回 1 行并且主查询没有过滤器,所以两个主查询 return 所有行
选择空 -> 1 行
select customer_id 来自客户 居住地 = 'los angeles' 并且年龄 > 20 岁并且年龄 < 40 岁 -> 一些行
如果您想 select 一个子集,只需在主查询中使用 where,无需使用出口。