Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencapai Fungsi KECUALI dalam MySQL Tanpa Menggunakan Klausa EXCEPT?

Bagaimana untuk Mencapai Fungsi KECUALI dalam MySQL Tanpa Menggunakan Klausa EXCEPT?

Barbara Streisand
Lepaskan: 2024-12-31 13:26:14
asal
191 orang telah melayarinya

How to Achieve EXCEPT Functionality in MySQL Without Using the EXCEPT Clause?

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'
);
Salin selepas log masuk

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'
Salin selepas log masuk

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'
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan