在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,即为假(行不存在)。