我觉得自己很笨拙,因为我一直在寻找关于存在到底是如何工作的信息,我继续没有弄清楚它。
假设我有以下查询:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
我从exists中知道的是,如果它的参数query为真,那么外部查询就会被执行,所以假设内部查询为真,那么输出结果就是外部查询的所有表:
SELECT *
FROM suppliers
但实际上它不是,我想我错过了一些东西,当exists被用来做内部连接时,就像这个例子一样,但我不明白...
我已经采取了这篇文章的例子,我已经阅读了所有的答案,我不明白它真的很好..:How do SQL EXISTS statements work?
我真的很感谢所有可能的帮助。先谢了
1条答案
按热度按时间0x6upsns1#
它实际上实现了以下伪代码循环:
现在您应该能够看到内部查询每次是如何变化的,它只是查找一个特定的
supplier_id
,而不是其中的任何一个。