我正在尝试学习SQL,并且很难理解EXISTS语句.我偶然发现了关于"存在"的引用并且不明白:
使用exists运算符,子查询可以返回零行,一行或多行,并且条件只检查子查询是否返回任何行.如果查看子查询的select子句,您将看到它包含一个文字(1); 由于包含查询中的条件只需要知道返回了多少行,因此子查询返回的实际数据无关紧要.
我不明白的是外部查询如何知道子查询检查哪一行?例如:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Run Code Online (Sandbox Code Playgroud)
我知道如果供应商和订单表中的id匹配,则子查询将返回true,并且将输出供应商表中匹配行的所有列.我不知道的是,如果只返回true或false,子查询如何传达应该打印哪个特定行(假设具有供应商ID 25的行).
在我看来,外部查询和子查询之间没有关系.
sql ×1