测试 MySQL 表中是否存在某行的最佳方法
mysqlmysqli database
要测试 MySQL 表中是否存在某行,请使用存在条件。存在条件 可以与子查询一起使用。当表中存在行时,它返回 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)
从上面的示例输出中,可以清楚地看出 row 存在,因为我们得到的值为 1。这意味着 TRUE!
案例 2
在这种情况下,我正在解释 row 不存在的情况。应用上述查询。
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(行不存在)。