KECUALI Ralat Sintaks dalam MySQL Query
Pertanyaan "SELECT s.sno FROM students s EXCEPT SELECT t.sno FROM take t WHERE t .cno = 'CS112';" gagal dengan ralat sintaks. Ini kerana MySQL tidak menyokong sintaks KECUALI.
Untuk mencapai hasil yang diinginkan iaitu mengecualikan pelajar yang telah mengambil kursus CS112, pendekatan alternatif mesti digunakan.
TIDAK DALAM Klausa
Satu pilihan ialah menggunakan NOT IN klausa:
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
Pertanyaan ini memilih semua sno pelajar yang tidak ditemui dalam subkueri, yang mendapatkan semula sno dari jadual ambil untuk kursus CS112.
KIRI SERTAI
Kaedah lain ialah menggunakan KIRI SERTAI:
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
Pertanyaan ini menggunakan gabungan kiri untuk menggabungkan pelajar dan mengambil jadual. Fungsi IFNULL() digunakan untuk mengendalikan nilai nol dalam lajur cno dan syarat menyemak jika nilai cno tidak sama dengan 'CS112', tidak termasuk pelajar yang telah mengikuti kursus tersebut.
Contoh Penggunaan
Dalam contoh yang disediakan, pendekatan LEFT JOIN ditunjukkan menggunakan mock dataset:
create temporary table temp_students (sno int) insert into temp_students values (1) insert into temp_students values (2) insert into temp_students values (3) insert into temp_students values (4) insert into temp_students values (5) insert into temp_students values (6) insert into temp_students values (7) insert into temp_students values (8) insert into temp_students values (9) insert into temp_students values (10) create temporary table temp_take (sno int, cno varchar(50)) insert into temp_take values (1, 'CS112') insert into temp_take values (2, 'CS112') insert into temp_take values (3, 'CS112') insert into temp_take values (4, 'CS112') SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112'
Pertanyaan ini mengembalikan sno 5 hingga 10, tidak termasuk pelajar yang telah mengambil kursus CS112.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi KECUALI dalam MySQL Tanpa Menggunakan Klausa EXCEPT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!