Rumah > pangkalan data > tutorial mysql > Bagaimanakah kita menukar subkueri kepada gabungan kiri?

Bagaimanakah kita menukar subkueri kepada gabungan kiri?

王林
Lepaskan: 2023-08-22 21:57:06
ke hadapan
1550 orang telah melayarinya

Bagaimanakah kita menukar subkueri kepada gabungan kiri?

Untuk menjadikannya mudah difahami, kami menggunakan data dari jadual berikut −

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)
Salin selepas log masuk

Kini, di bawah adalah subkueri yang akan mencari nama semua pelanggan yang tidak menempah sebarang kereta.

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

Kini, dengan langkah berikut, kita boleh menukar subkueri di atas menjadi RIGHT JOIN −

  • Alihkan jadual bernama 'Rizab' dalam subquery ke klausa FROM dan gunakan LEFT JOIN untuk menyertainya dengan jadual 'Pelanggan' sertai.
  • Klausa WHERE membandingkan lajur customer_id dengan id yang dikembalikan oleh subquery. Oleh itu, ungkapan IN ditukar kepada perbandingan langsung yang jelas antara lajur id kedua-dua jadual dalam klausa FROM.
  • Dalam klausa WHERE, hadkan output kepada baris dengan nilai NULL dalam jadual 'Rizab'.
mysql> SELECT Name from customers LEFT JOIN reserve ON customer_id = Id WHERE Id IS NULL;
+----------+
| Name     |
+----------+
| Virender |
+----------+
1 row in set (0.00 sec)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah kita menukar subkueri kepada gabungan kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan