Chào mọi người.
Mình gặp vài sự cố nên xin mọi người giúp đỡ, chả là mình đang cố gắng xóa các hàng trùng lặp nhưng nó hiện ra lỗi Operand should contain 1 column(s) từ MySQL.
- Đầu tiên mình liệt kê các sinh viên đã học các môn, kể cả các sinh viên bị trùng môn học (sinh viên học 1 môn học trong 1 học kì nhưng khác điểm) vào bảng tạm.
- Từ bảng tạm mình liệt kê ra các sinh viên học 1 môn học trong 1 học kì
- Lệnh cuối cùng là xóa những trùng lăp này (Dựa vào bảng tạm vừa liệt kệ trên) và in ra màn hình nhưng ăn lỗi
Xin mọi người xem mình có sai chỗ nào không, và nếu sai hàm xóa thì mình phải làm như thế nào
Toàn bộ lệnh truy vấn:
/* Liệt kê các môn sinh viên đã học, bao gồm các môn bị trùng lặp trong một học kì */
create temporary table tmp as (
select SV.MSSV, HoTenSv, TenMon, Diem, HKNH
from sinhvien as SV inner join pnt as P on SV.MSSV = P.MSSV
inner join LopMH as L on P.MaLop = L.MaLop
inner join Mon as M on L.MaMon = M.MaMon
group by SV.MSSV, HoTenSv, TenMon, Diem, HKNH
);
select * from tmp;
drop temporary table tmp;
/*-------------------------------------------------------------------------------*/
/*Liệt kê các sinh viên học một môn ở một học kì xuất hiện 2 lần */
select MSSV, HoTenSv, TenMon
from tmp
group by MSSV, HoTenSv, TenMon
having count(*)>=2
order by MSSV asc;
/* Xóa dòng trùng nhau */
delete from tmp
where (select MSSV, HoTenSv, TenMon
from tmp
group by MSSV, HoTenSv, TenMon
having count(*)>=2
); /* Nơi bị lỗi */