需要帮助来理解 EXISTS behaviour/return

Need help to understand EXISTS behaviour/return

我是初学者。据我了解,如果子查询包含任何行,EXISTS 将 return 为真。这是否意味着只有一个布尔值 returned?

 SELECT * FROM TABLE1 T1 WHERE EXISTS (
 SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
);

例如:此查询应该 return 元组 Table 1 仅当来自 table 的 ID 匹配时。但是如果 EXISTS returns 只有 1 个为真(因为子查询不为空 - 至少有一行)那么它不应该等同于:

SELECT * FROM TABLE1 T1 WHERE TRUE;

不应该 return Table 1 中的所有行吗?如果 EXISTS return 每次行不为空时都是一个布尔值 那么它对我来说更有意义。 谢谢。

您可能误解了第一个查询的逻辑。用简单的英语来说,您的存在查询对 return TABLE1 中的每条记录说,我们可以在 TABLE2 中找到具有相同 ID 的记录。请注意,exists 子句中的查询在逻辑上针对 TABLE1 中的 every 记录进行评估。它不只执行一次。