小编Dan*_*Dan的帖子

SQL EXISTS语句如何工作?

我正在尝试学习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

78
推荐指数
6
解决办法
9万
查看次数

标签 统计

sql ×1