Dùng IN với subquery hoặc JOIN. Tạo bảng 1:
mysql> CREATE TABLE DemoTable1 (Id INT); Query OK, 0 rows affected (1.26 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable1 VALUES(100); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DemoTable1 VALUES(110); Query OK, 1 row affected (0.49 sec) mysql> INSERT INTO DemoTable1 VALUES(4); Query OK, 1 row affected (0.44 sec) mysql> INSERT INTO DemoTable1 VALUES(3); Query OK, 1 row affected (0.18 sec)
Tạo bảng 2:
mysql> CREATE TABLE DemoTable2 (Id INT, Name VARCHAR(50)); Query OK, 0 rows affected (0.78 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable2 VALUES(4,'Chris'); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO DemoTable2 VALUES(1,'David'); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO DemoTable2 VALUES(110,'Adam'); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable2 VALUES(210,'Bob'); Query OK, 1 row affected (0.19 sec)
Truy vấn lấy hàng từ bảng 2 có Id tồn tại trong bảng 1:
mysql> SELECT Id, Name FROM DemoTable2 WHERE Id IN (SELECT Id FROM DemoTable1);
Kết quả (Id 4 và 110):
+------+-------+ | Id | Name | +------+-------+ | 110 | Adam | | 4 | Chris | +------+-------+ 2 rows in set (0.39 sec)
Cách thay thế: INNER JOIN DemoTable1 ON DemoTable2.Id = DemoTable1.Id — thường hiệu quả hơn với bảng lớn.