在使用子查詢時,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)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP