Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Trả về nhiều kết quả trong truy vấn con MySQL với IN()

Mệnh đề IN() trong MySQL cho phép truy vấn con trả về nhiều giá trị để so sánh.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable1317 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20)
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1317(Name) VALUES('Chris Brown');
mysql> INSERT INTO DemoTable1317(Name) VALUES('John Doe');
mysql> INSERT INTO DemoTable1317(Name) VALUES('Adam Smith');
mysql> INSERT INTO DemoTable1317(Name) VALUES('John Smith');
mysql> INSERT INTO DemoTable1317(Name) VALUES('David Miller');
mysql> INSERT INTO DemoTable1317(Name) VALUES('Carol Taylor');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable1317;
+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | Chris Brown  |
| 2  | John Doe     |
| 3  | Adam Smith   |
| 4  | John Smith   |
| 5  | David Miller |
| 6  | Carol Taylor |
+----+--------------+

Truy vấn con với IN() - lấy Name của các Id tồn tại trong bảng (ví dụ đơn giản):

mysql> SELECT Name FROM DemoTable1317
    WHERE Id IN (SELECT Id FROM DemoTable1317);

Kết quả (trả về tất cả vì Id khớp chính nó):

+--------------+
| Name         |
+--------------+
| Chris Brown  |
| John Doe     |
| Adam Smith   |
| John Smith   |
| David Miller |
| Carol Taylor |
+--------------+

Ứng dụng thực tế: Thường dùng IN (SELECT ...) với điều kiện lọc khác, ví dụ: WHERE CategoryId IN (SELECT Id FROM Categories WHERE Active = 1).