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

Lấy ID trùng nhau từ hai bảng MySQL

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.