Computer >> Máy Tính >  >> Lập trình >> MySQL

Truy vấn chọn MySQL để chọn các hàng từ một bảng không có trong bảng khác?

Đối với ví dụ của chúng tôi, chúng tôi sẽ tạo hai bảng và áp dụng Natural Left Join để lấy các hàng từ một bảng không có trong bảng thứ hai.

Tạo bảng đầu tiên.

mysql> create table FirstTableDemo
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.48 sec)

Chèn các bản ghi vào bảng đầu tiên.

mysql> insert into FirstTableDemo values(1,'Bob'),(2,'John'),(3,'Carol');
Query OK, 3 rows affected (0.13 sec)
Records: 3  Duplicates: 0  Warnings: 0

Để hiển thị tất cả các bản ghi.

mysql> select *from FirstTableDemo;

Sau đây là kết quả.

+------+-------+
| id   | name  |
+------+-------+
|    1 | Bob   |
|    2 | John  |
|    3 | Carol |
+------+-------+
3 rows in set (0.00 sec)

Tạo bảng thứ hai.

mysql> create table SecondTableDemo
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.62 sec)

Chèn các bản ghi vào bảng thứ hai.

mysql> insert into SecondTableDemo values(1,'Bob'),(2,'John');
Query OK, 2 rows affected (0.12 sec)
Records: 2  Duplicates: 0  Warnings: 0

Để hiển thị tất cả các bản ghi.

mysql> select *from SecondTableDemo;

Sau đây là kết quả.

+------+------+
| id   | name |
+------+------+
|    1 | Bob  |
|    2 | John |
+------+------+

Sau đây là cú pháp để chọn các hàng không có trong bảng thứ hai.

mysql> SELECT tbl1.*
    -> FROM FirstTableDemo tbl1
    -> NATURAL LEFT JOIN  SecondTableDemo tbl2
    -> where tbl2.name IS NULL;

Sau đây là kết quả hiển thị các hàng trong bảng đầu tiên, nhưng không hiển thị trong bảng thứ hai, tức là “Carol”.

+------+-------+
| id   | name  |
+------+-------+
|    3 | Carol |
+------+-------+
1 row in set (0.03 sec)