在 MySQL 子查询中使用时,EXISTS 和 IN 中哪一个更受欢迎?
mysqlmysqli database
EXISTS 表示查询是否返回结果,而 IN 可用于将一个值与另一个值进行比较。IN 使用文字值。
注意 − 当子查询结果非常小时,子查询中首选 IN。如果子查询结果非常大,则使用 EXISTS。
由于 IN 是较小子查询结果的首选,因此我们正在考虑 IN 的示例。
创建一个表。
mysql> create table InSubQueryDemo -> ( -> PNumber int, -> PName varchar(100) -> ); Query OK, 0 rows affected (0.60 sec)
将记录插入表中。
mysql> insert into InSubQueryDemo values(1,'Laptop'); Query OK, 1 row affected (0.17 sec) mysql> insert into InSubQueryDemo values(2,'WirelessKeyboard'); Query OK, 1 row affected (0.21 sec) mysql> insert into InSubQueryDemo values(3,'WirelessMouse'); Query OK, 1 row affected (0.12 sec)
显示所有记录。
mysql> select *from InSubQueryDemo;
以下是输出。
+---------+------------------+ | PNumber | PName | +---------+------------------+ | 1 | Laptop | | 2 | WirelessKeyboard | | 3 | WirelessMouse | +---------+------------------+ 3 rows in set (0.00 sec)
以下是 IN 的语法,其中包含一个用于获取大于 1 的"PNumber"的子查询。
mysql> select *from InSubQueryDemo -> where PNumber IN (select PNumber from InSubQueryDemo WHERE PNumber > 1);
这是输出。
+---------+------------------+ | PNumber | PName | +---------+------------------+ | 2 | WirelessKeyboard | | 3 | WirelessMouse | +---------+------------------+ 2 rows in set (0.04 sec)