MySQL Exists

17 Mar 2025 | 4 分钟阅读

MySQL 中的 EXISTS 运算符是一种布尔运算符,用于返回真或假结果。它与子查询结合使用,并检查子查询中是否存在数据。这意味着如果子查询返回任何记录,此运算符将返回 true。否则,它将返回 false。True 值始终表示为数字 1,False 值表示为 0。我们可以将其与 SELECT、UPDATE、DELETE、INSERT 语句一起使用。

语法

以下是在 MySQL 中使用 EXISTS 运算符的语法

NOT 运算符用于否定 EXISTS 运算符。当子查询不返回任何行时,它返回 true。否则,它返回 false。

通常,EXISTS 查询以 SELECT * 开头,但它可以以 SELECT column、SELECT a_constant 或子查询中的任何内容开头。它会给出相同的输出,因为 MySQL 会忽略子查询中的 select 列表。

此运算符在找到匹配结果后会立即终止进一步的处理。此功能提高了 MySQL 中查询的性能。

参数解释

以下是 EXISTS 运算符中使用的参数

参数名称描述
col_names它是指定表中包含的列的名称。
tab_name它是我们要从中执行 EXISTS 运算符的表的名称。
天气状况它用于从表中搜索特定值。
subquery它通常是以 SELECT * 开头的 SELECT 语句,但 MySQL 在子查询中会忽略它。

MySQL EXISTS 运算符示例

让我们了解 MySQL 中的 EXISTS 运算符如何工作。在这里,我们将首先使用以下语句创建两个名为“customer”和“orders”的表


接下来,我们需要在两个表中插入值。执行以下语句


要验证表,请运行下面的 SELECT 命令

我们将获得以下输出

MySQL Exists

MySQL SELECT EXISTS 示例

在此示例中,我们将使用 EXISTS 运算符查找至少下过一个订单的客户的姓名和职业。

出现以下输出

MySQL Exists

同样,如果我们想获取未下过订单的客户的姓名,则使用 NOT EXISTS 运算符。

它将显示以下输出

MySQL Exists

MySQL EXISTS 与 DELETE 语句示例

假设我们要从 Orders 表中删除 order_id = 3 的记录,请执行以下查询,该查询将永久删除 Orders 表中的记录。

要验证输出,请运行以下命令

在输出中,我们可以看到 order_id=3 的表记录已成功删除。

MySQL Exists

如果我们想检查表中是否存在某一行,请使用以下查询

我们将获得输出 1,表示 true。因此,cust_id=104 存在于表中。

MySQL Exists

EXISTS 和 IN 运算符之间的区别

EXISTS 和 IN 运算符之间的主要区别以表格形式给出

序号INEXISTS
1.它用于最小化 MySQL 中的多个 OR 条件。它用于检查子查询中是否存在数据。
2.SELECT col_names FROM tab_name WHERE col_name IN (subquery);
SELECT col_names
FROM tab_name
WHERE [NOT] EXISTS (subquery);
3.它会比较 IN 运算符内的所有值。它在找到第一个 true 出现后立即停止进一步执行。
4.可用于比较 NULL 值。不能用于比较 NULL 值。
5.当子查询结果较小时,执行速度更快。当子查询结果较大时,执行速度更快。
6.它在父查询和子查询之间执行比较。它不执行父查询和子查询之间的比较。

下一主题MySQL NOT 条件