在 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.