Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Mencontohi FULL JOIN dalam MySQL Menggunakan LEFT dan KANAN JOIN?

Bagaimanakah Saya Boleh Mencontohi FULL JOIN dalam MySQL Menggunakan LEFT dan KANAN JOIN?

Barbara Streisand
Barbara Streisandasal
2024-11-16 08:38:02234semak imbas

How Can I Emulate a FULL JOIN in MySQL Using LEFT and RIGHT JOINs?

Meniru MySQL FULL JOIN dengan KIRI dan KANAN JOINS

MySQL tidak menyokong operasi FULL JOIN secara asli. Walau bagaimanapun, adalah mungkin untuk mencapai hasil yang serupa menggunakan gabungan LEFT JOIN dan KANAN JOIN.

Memahami Masalah

Matlamatnya adalah untuk mengembalikan set keputusan yang merangkumi semua rekod daripada kedua-dua jadual, Orang dan Pesanan, walaupun medan yang sepadan (P_Id) adalah batal dalam mana-mana jadual.

Penyelesaian

Untuk mensimulasikan JOIN PENUH, gunakan pertanyaan berikut:

SELECT  p.LastName, p.FirstName, o.OrderNo
FROM    Persons p
LEFT JOIN
        Orders o
ON      p.P_Id = o.P_Id
UNION ALL
SELECT  p.LastName, p.FirstName, o.OrderNo
FROM    Persons p
RIGHT JOIN
        Orders o
ON      p.P_Id = o.P_Id
WHERE   p.P_Id IS NULL
ORDER BY
        p.LastName;

Penjelasan

  • LEFT JOIN mengembalikan semua baris daripada jadual Orang, termasuk yang mempunyai nilai P_Id yang sepadan dalam jadual Pesanan dan yang tidak.
  • Operasi UNION ALL menggabungkan hasil LEFT JOIN dengan hasil RIGHT JOIN, yang mengembalikan semua baris daripada jadual Orders, termasuk yang mempunyai nilai P_Id yang sepadan dalam jadual Persons dan yang tanpa.
  • Klausa WHERE menapis mana-mana baris daripada jadual Persons yang mempunyai P_Id nol, memastikan semua baris dari LEFT JOIN disertakan.
  • Klausa ORDER BY mengisih keputusan mengikut lajur Nama Akhir.

Pertanyaan ini menghasilkan set hasil yang sama dengan yang diterangkan dalam pernyataan masalah:

LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendsen Tove 34764

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencontohi FULL JOIN dalam MySQL Menggunakan LEFT dan KANAN JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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