需要帮助来理解 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 记录进行评估。它不只执行一次。
我是初学者。据我了解,如果子查询包含任何行,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 记录进行评估。它不只执行一次。