Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Tidak Menyokong KECUALI dan Bagaimana Saya Boleh Mencapai Keputusan Yang Sama?
KECUALI Ralat Sintaks dalam Pertanyaan MySQL
Pengguna MySQL mungkin menghadapi ralat sintaks apabila cuba menggunakan operator EXCEPT dalam pertanyaan mereka. Ralat ini sering berlaku apabila cuba mengecualikan baris daripada jadual utama yang sepadan dengan syarat dalam subkueri.
Pertimbangkan contoh berikut:
SELECT s.sno FROM students s EXCEPT SELECT t.sno FROM take t WHERE t.cno = 'CS112';
Pertanyaan ini cuba mendapatkan semua ID pelajar daripada jadual "pelajar" yang tidak terdapat dalam jadual "ambil" untuk kursus "CS112." Walau bagaimanapun, MySQL tidak menyokong sintaks KECUALI.
Penyelesaian Alternatif:
Untuk mencapai hasil yang diinginkan, terdapat dua pendekatan alternatif:
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
Pertanyaan ini secara jelas menyemak sama ada ID pelajar dalam jadual "pelajar" tidak terdapat dalam jadual "ambil" untuk kursus "CS112."
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Pertanyaan ini menggunakan LEFT JOIN untuk memadankan ID pelajar antara jadual "pelajar" dan "ambil". Ia kemudian menggunakan fungsi IFNULL untuk menyemak sama ada medan "cno" dalam jadual "ambil" adalah batal, menunjukkan pelajar tidak mendaftar dalam "CS112."
Contoh Penggunaan:
Menggunakan data olok-olok dalam soalan, semakan LEFT JOIN with NULL menghasilkan yang berikut hasil:
SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
Output:
5 6 7 8 9 10
Oleh itu, daripada menggunakan sintaks KECUALI, pengguna boleh menggunakan subkueri NOT IN atau LEFT JOIN dengan strategi semakan NULL untuk mengecualikan baris dalam MySQL pertanyaan.
Atas ialah kandungan terperinci Mengapa MySQL Tidak Menyokong KECUALI dan Bagaimana Saya Boleh Mencapai Keputusan Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!