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

Làm cách nào chúng ta có thể chuyển đổi truy vấn con thành RIGHT JOIN?


Để hiểu rõ, chúng tôi đang sử dụng dữ liệu từ các bảng sau -

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from Reserve;
+------+------------+
| ID   | Day        |
+------+------------+
| 1    | 2017-12-30 |
| 2    | 2017-12-28 |
| 2    | 2017-12-25 |
| 1    | 2017-12-24 |
| 3    | 2017-12-26 |
+------+------------+
5 rows in set (0.00 sec)

Bây giờ, sau đây là một truy vấn phụ sẽ tìm tên của tất cả những khách hàng chưa đặt trước bất kỳ chiếc xe nào.

mysql> Select Name from customers where customer_id NOT IN (Select id From reserve);
+----------+
| Name     |
+----------+
| Virender |
+----------+
1 row in set (0.00 sec)

Bây giờ, với sự trợ giúp của các bước sau, chúng ta có thể chuyển đổi truy vấn con ở trên thành RIGHT JOIN -

  • Di chuyển bảng "Khách hàng" có tên trong truy vấn con sang mệnh đề FROM và nối bảng với "Đặt trước" bằng cách sử dụng RIGHT JOIN.

  • Mệnh đề WHERE so sánh cột customer_id với id được trả về từ truy vấn con. Do đó, chuyển đổi biểu thức IN thành một so sánh trực tiếp rõ ràng giữa các cột id của hai bảng trong mệnh đề FROM.

  • Trong mệnh đề WHERE, giới hạn đầu ra cho những hàng có NULL trong bảng "Dự trữ".

mysql> SELECT Name from reserve RIGHT JOIN customers ON customer_id = Id WHERE Id IS NULL;
+----------+
| Name     |
+----------+
| Virender |
+----------+
1 row in set (0.00 sec)