【问题标题】:Need help to understand EXISTS behaviour/return需要帮助以了解 EXISTS 行为/回报
【发布时间】: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 每次一行不为空时都返回一个布尔值,那么这对我来说更有意义。 谢谢。

【问题讨论】:

    标签: mysql sql exists


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2016-05-03
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多