Kekurangan FULL OUTER JOIN MySQL dan Penyelesaiannya
Masalah:
Pertanyaan MySQL menggunakan FULL OUTER JOIN
menghasilkan ralat sintaks. Pertanyaan cuba untuk menyertai berbilang jadual menggunakan FULL OUTER JOIN
, sintaks yang kelihatan betul tetapi tidak disokong oleh MySQL.
Penyelesaian:
MySQL tidak menyokong langsung FULL OUTER JOIN
. Penyelesaiannya melibatkan meniru fungsi ini menggunakan gabungan LEFT JOIN
dan RIGHT JOIN
dengan UNION
pernyataan.
Mencontohi PENYERTAAN LUAR PENUH:
Untuk dua jadual (t1
dan t2
), satu FULL OUTER JOIN
direplikasi seperti ini:
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id;</code>
Pendekatan ini meluas ke berbilang jadual. Untuk tiga jadual (t1
, t2
, t3
), yang setara ialah:
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id RIGHT JOIN t3 ON t2.id = t3.id;</code>
Aplikasi rekursif LEFT JOIN
, RIGHT JOIN
dan UNION
ini secara berkesan meniru gelagat FULL OUTER JOIN
dalam MySQL, menyediakan penyelesaian praktikal untuk pengehadan ini.
Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Saya Gagal dengan Ralat Sintaks pada FULL OUTER JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!