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

Kết hợp UNION SELECT và mệnh đề IN trong một truy vấn MySQL

Tạo hai bảng sinh viên

mysql> CREATE TABLE DemoTable1 (
    -> StudentId INT,
    -> StudentName VARCHAR(20)
    -> );
mysql> INSERT INTO DemoTable1 VALUES(210, 'Adam');

mysql> CREATE TABLE DemoTable2 (
    -> StudentId INT,
    -> StudentName VARCHAR(20)
    -> );
mysql> INSERT INTO DemoTable2 VALUES(100, 'Chris');

Dữ liệu từng bảng

mysql> SELECT * FROM DemoTable1;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 210       | Adam        |
+-----------+-------------+

mysql> SELECT * FROM DemoTable2;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 100       | Chris       |
+-----------+----------+

Truy vấn UNION + IN

Gộp hai bảng, sau đó lọc StudentId trong danh sách:

mysql> SELECT StudentName FROM (
    ->   SELECT StudentId, StudentName FROM DemoTable1
    ->   UNION
    ->   SELECT StudentId, StudentName FROM DemoTable2
    -> ) AS tbl
    -> WHERE StudentId IN (210, 100);

Kết quả

+-------------+
| StudentName |
+-------------+
| Adam        |
| Chris       |
+-------------+

Lưu ý: UNION loại bỏ trùng lặp; dùng UNION ALL nếu muốn giữ trùng. Subquery别名 tbl bắt buộc.