在 MySQL 表中检查行是否存在的最优方法


要测试 MySQL 表中是否存在行,可以使用 exists 条件。exists 条件可以与子查询一起使用。如果表中存在行,则返回 true,否则返回 false。True 以 1 的形式表示,False 以 0 的形式表示。

为了更好地理解,首先我们将借助 CREATE 命令 创建一个表。以下是创建表的查询:

mysql> CREATE table ExistsRowDemo
-> (
-> ExistId int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)

成功创建表后,我们将借助 INSERT 命令 插入一些记录。将记录插入表的查询:

mysql> INSERT into ExistsRowDemo values(100,'John');
Query OK, 1 row affected (0.16 sec)

mysql> INSERT into ExistsRowDemo values(101,'Bob');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into ExistsRowDemo values(103,'Carol');
Query OK, 1 row affected (0.20 sec)

mysql> INSERT into ExistsRowDemo values(104,'David');
Query OK, 1 row affected (0.13 sec)

插入所有记录后,我们可以借助 SELECT 命令 显示它们,如下所示:

mysql> SELECT * from ExistsRowDemo;

以下是输出:

+---------+-------+
| ExistId | Name  |
+---------+-------+
| 100     | John  |
| 101     | Bob   |
| 103     | Carol |
| 104     | David |
+---------+-------+
4 rows in set (0.00 sec)

我们在表中添加了一些记录。使用 EXISTS 条件检查表中是否存在行的语法如下:

SELECT EXISTS(SELECT * FROM yourTableName WHERE yourCondition);

我正在应用上述查询以获取结果:

Note: Firstly, I am considering the condition when row exists in the table. After that, the
condition will be mentioned when a row does not exist.

案例 1

在这种情况下,我给出了行存在时的条件。让我们应用上述语法来测试行是否存在。

mysql> SELECT EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=104);

以下是输出:

+------------------------------------------------------+
| EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=104)|
+------------------------------------------------------+
| 1                                                    |
+------------------------------------------------------+
1 row in set (0.00 sec)

从上面的示例输出可以清楚地看出,行存在,因为我们得到的值为 1。这意味着 TRUE!

案例 2

在这种情况下,我解释了行不存在时的条件。应用上述查询。

mysql> SELECT EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=105);

以下是输出:

+------------------------------------------------------+
| EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=105)|
+------------------------------------------------------+
| 0                                                    |
+------------------------------------------------------+
1 row in set (0.00 sec)

从上面的输出中,我们可以看到输出为 0,即 false(行不存在)。

更新于: 2023-09-06

44K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告