Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để Left Join / IS NULL loại bỏ các bản ghi có trong một bảng và không có trong bảng kia?

Điều này có thể được giải thích với những điều sau

mysql> select * from table1 ;
+------+------+
| id   | val  |
+------+------+
|    1 |   10 |
|    2 |   30 |
|    3 |   40 |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from table2 ;
+------+------+
| id   | t1id |
+------+------+
|    1 |    1 |
|    2 |    2 |
+------+------+
2 rows in set (0.00 sec)

Đây table1.id <-> table2.t1id

Bây giờ khi chúng ta thực hiện left join với khóa kết hợp và nếu bảng bên trái là table1 thì nó sẽ lấy tất cả dữ liệu từ table1 và trong bản ghi không khớp trên table2 sẽ được đặt thành null

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id ;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    1 |   10 |    1 |
|    2 |   30 |    2 |
|    3 |   40 | NULL |
+------+------+------+

3 rows in set (0.00 sec)

Xem rằng table1.id =3 không có giá trị trong table2 nên được đặt là null Khi bạn áp dụng điều kiện where, nó sẽ thực hiện lọc thêm

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id where t2.t1id is null;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    3 |   40 | NULL |
+------+------+------+
1 row in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. iPhone:Kết nối với cơ sở dữ liệu qua Internet?

  2. Tôi có thể sử dụng MySQL LOAD XML LOCAL INFILE nếu các hàng của tôi không có 'tên' không?

  3. Cách kiểm tra biến tồn tại trong cơ sở dữ liệu wordpress bằng cách sử dụng $ wpdb

  4. Thay thế một chuỗi bằng một chuỗi khác trong kết quả cơ sở dữ liệu bằng CodeIgniter

  5. MySQL cha -> truy vấn con