gpt4 book ai didi

MySQL WHERE EXISTS 对所有记录评估为真

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:03 25 4
gpt4 key购买 nike

我正在尝试运行一个查询来检索存在于子查询中的表中的所有记录。

但是,它返回所有记录而不是我期望的记录。

这里是查询:

SELECT DISTINCT x FROM T1 WHERE EXISTS 
(SELECT * FROM T1 NATURAL JOIN T2 WHERE T2.y >= 3.0);

我已经尝试测试子查询,它返回符合我的约束条件的正确记录数。

但是当我运行整个查询时,它返回的记录不应存在于子查询中。

为什么 EXISTS 对 T1 中的所有记录都求值为真?

最佳答案

您需要一个相关的子查询,而不是子查询中的连接。目前还不清楚正确的关联子句是什么,但像这样:

SELECT DISTINCT x
FROM T1
WHERE EXISTS (SELECT 1 FROM T2 WHERE T2.COL = T1.COL AND T2.y >= 3.0);

您的查询有一个常规子查询。每当它至少返回一行时,exists 就为真。因此,必须至少有一个匹配行。此版本“逻辑上”为外部 T1 中的每一行运行子查询。

关于MySQL WHERE EXISTS 对所有记录评估为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com