gpt4 book ai didi

mysql - 存在子句会比较记录吗?

转载 作者:行者123 更新时间:2023-11-29 11:28:43 25 4
gpt4 key购买 nike

我有两个表

tb1(field1 int) containing 1,2,3,4
tb2(field2 int) containing 4,12,19,30

当我运行时

select * from tb1 where exists(select * from tb2 ); 

我从 tb1 中获取全部值。为什么会这样呢?我认为它只会带来 4,因为它出现在两个表中。现在我对存在子句完全感到困惑。我想知道exists 子句在这里做什么?请帮助我。

最佳答案

表达式

exists(select * from tb2 )

与外部查询不相关。它可以完全独立于它进行评估。如果表 tb2 包含任何行,则计算结果为 true;如果表为空,则计算结果为 false。由于 tb2 确实包含至少一行,因此它被评估为 true,因此您的 where 子句对于每一行都评估为 true

您需要将其关联起来,以便它按照您的意愿工作

SELECT *
FROM tb1
WHERE EXISTS(SELECT *
FROM tb2
WHERE tb1.field1 = tb2.field2);

关于mysql - 存在子句会比较记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773399/

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