关于mysql in exists执行情况

在MYSQL中使用EXISTS函数

上周我的朋友问了如何在MySQL中使用EXISTS。

该运算符用于判断子查询是否返回数据行。

返回正确的行。

语法是 WHERE EXISTS(子查询)。

例如,检查有订单的产品。

产品表和订单表。

包含 ID、名称、价格的产品表。

订单表有 id、Product_id、数量。

检查orders表中出现的所有产品:
SELECT FROM products WHERE EXISTS (SELECT 1 FROMorders o WHERE o.product_id = p.id);
子查询查看orders表中是否存在与当前p.id匹配的product_id。

如果是,返回记录p。

另一个例子是组合价格条件。

检查价格是否低于 1 00 并且有订单:
从价格 < 1 xss=clean>添加价格 < 1>
NOT EXISTS 用法相反。

检查没有订单的产品:
SELECT FROM products WHERE NOT EXISTS (SELECT 1 FROM Orders o WHERE o.product_id = p.id);
这将返回订单表中不匹配的 p 记录。

EXISTS 与 IN 不同。

EXISTS 非常有效。

子查询数据量较大时使用EXISTS。

IN 将首先运行子查询并保存结果。

例如,使用 IN 来测试类似的功能:
SELECT FROM Product WHERE id IN (SELECT DISTINCT Product_id FROM order);
NOT EXISTS 适合排除数据。

JOIN 匹配子查询数据。

子查询字段必须有索引。

复杂的子查询可以用 JOIN 代替。

EXISTS是一种有效的过滤方式。

根据您的需要选择 EXISTS/IN/JOIN。

就是这样。

MySQL 中的三种子查询

where子查询要求内层返回一行一列。
in子查询要求内层返回单列多行。

from子查询使用结果作为临时表。
存在的子查询测试内层是否成立。

表格创建完成了吗?我们先来说说数据。