【发布时间】:2021-11-18 20:14:42
【问题描述】:
我是初学者。据我了解,如果子查询包含任何行,EXISTS 将返回 true。这是否意味着只返回一个布尔值?
SELECT * FROM TABLE1 T1 WHERE EXISTS (
SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
);
例如:此查询应仅在两个表中的 ID 匹配的情况下返回表 1 的元组。但是如果 EXISTS 只返回 1 true (因为子查询不为空 - 至少有一行),那么它不应该等同于:
SELECT * FROM TABLE1 T1 WHERE TRUE;
它不应该返回表 1 中的所有行吗?如果 EXISTS 每次一行不为空时都返回一个布尔值,那么这对我来说更有意义。 谢谢。
【问题讨论】: