在使用子查詢時,MySQL EXISTS和IN之間哪一個更可取?


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)

更新於:30-Jul-2019

63 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.