- EXISTS: Kiểm tra subquery có trả về hàng nào không (boolean).
- IN: So sánh giá trị với tập hợp giá trị literal.
Quy tắc:
- Subquery kết quả nhỏ → dùng IN (ưu tiên)
- Subquery kết quả lớn → dùng EXISTS (hiệu quả hơn)
Ví dụ IN (subquery nhỏ)
mysql> CREATE TABLE InSubQueryDemo (PNumber INT, PName VARCHAR(100)); Query OK, 0 rows affected (0.60 sec) mysql> INSERT INTO InSubQueryDemo VALUES(1,'Laptop'),(2,'WirelessKeyboard'),(3,'WirelessMouse'); Query OK, 3 rows affected (0.17 sec)
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)