Subquery trong MySQL phải được bao trong cặp ngoặc đơn ().
Cú pháp đúng
SELECT IF((SELECT COUNT(*) FROM ten_bang), 'Yes', 'No') AS ten_alias;
Ví dụ minh họa
Tạo bảng và chèn dữ liệu:
mysql> CREATE TABLE SelectIfDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(10)
-> );
mysql> INSERT INTO SelectIfDemo(Name) VALUES('John');
mysql> INSERT INTO SelectIfDemo(Name) VALUES('Carol');
mysql> INSERT INTO SelectIfDemo(Name) VALUES('Larry');
mysql> INSERT INTO SelectIfDemo(Name) VALUES('Bob');
mysql> INSERT INTO SelectIfDemo(Name) VALUES('Sam');
Sử dụng subquery đúng cách:
mysql> SELECT IF((SELECT COUNT(*) FROM SelectIfDemo), 'Yes', 'No') AS Result;
Kết quả:
+--------+ | Result | +--------+ | Yes | +--------+
Lỗi thường gặp
Sai: SELECT IF(SELECT COUNT(*) FROM bang, 'Yes', 'No') - thiếu ngoặc đơn
Đúng: SELECT IF((SELECT COUNT(*) FROM bang), 'Yes', 'No') - có ngoặc đơn bao subquery
Subquery có thể xuất hiện ở:
- Mệnh đề SELECT (như ví dụ)
- Mệnh đề WHERE:
WHERE cot > (SELECT AVG(cot) FROM bang) - Mệnh đề FROM:
SELECT * FROM (SELECT * FROM bang) AS t - Mệnh đề HAVING
Luôn nhớ bao subquery trong ().