Menyelesaikan Had PENYERTAAN LUAR PENUH MySQL
Kekurangan sokongan FULL OUTER JOIN
asli MySQL sering membawa kepada ralat sintaks. Panduan ini menunjukkan penyelesaian menggunakan operator UNION
untuk mencapai hasil yang sama.
Menghadapi ralat ini:
<code class="language-sql">You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer join airports on airlines.iaco_code = airports.iaco_code full outer join' at line 4</code>
mengesahkan ketidakserasian MySQL dengan pernyataan FULL OUTER JOIN
.
Penyelesaian melibatkan simulasi FULL OUTER JOIN
menggunakan UNION
untuk dua atau lebih jadual.
Dua Jadual (t1 dan t2):
<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>
Ini menggabungkan hasil LEFT JOIN
(semua baris daripada t1
, memadankan baris daripada t2
) dan RIGHT JOIN
(semua baris daripada t2
, memadankan baris daripada t1
), mereplikasi dengan berkesan a FULL OUTER JOIN
.
Tiga Jadual (t1, t2 dan t3):
Untuk tiga jadual, kerumitan meningkat, memerlukan berbilang operasi UNION
:
<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>
Pendekatan ini secara sistematik menggabungkan semua gabungan gabungan yang mungkin untuk meniru FULL OUTER JOIN
merentas tiga jadual. Ingat untuk melaraskan t1.id
dan t2.id
untuk mencerminkan lajur gabungan sebenar dalam senario khusus anda. Teknik ini membolehkan anda memintas batasan MySQL dan mencapai kefungsian FULL OUTER JOIN
yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Kekurangan MySQL FULL OUTER JOIN Sokongan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!