[英]Issue of Select in MySql using NOT IN operator?
我已使用以下mysql查詢來選擇所有選定的信息,其中costusinging table中不存在student表的student ID,但遇到錯誤。
有什么幫助嗎? 提前致謝!
select st.id as 'Student ID', st.stud_fname as 'First Name', st.stud_lname as 'Last Name', st.stud_middle_name as 'Middle Name',
dp.dep_name as 'Department',dp.max_dur_year as 'Max Duration', st.entry_year as 'Entry',MAX(sc.acc_year) as 'Current Academic Year',
sum(sc.Tuition_fee+sc.Accomod_fee+sc.Food_fee) as 'Total Cost Sharing'
from student st left JOIN student_costsharing sc on st.id = sc.stud_id
left join department dp on st.dep_id=dp.id
where st.id not in ( SELECT *
FROM student_costsharing
WHERE sc.stud_id=st.id
)
GROUP BY st.stud_fname
order by st.stud_fname
錯誤信息:
1241-操作數應包含1列
代替使用*
您需要在IN
子句中指定列
where st.id not in ( SELECT stud_id
FROM student_costsharing
WHERE sc.stud_id=st.id
)
試試這些,我改變了WHERE NOT IN語句:-
select st.id as 'Student ID', st.stud_fname as 'First Name', st.stud_lname as 'Last Name', st.stud_middle_name as 'Middle Name',
dp.dep_name as 'Department',dp.max_dur_year as 'Max Duration', st.entry_year as 'Entry',MAX(sc.acc_year) as 'Current Academic Year',
sum(sc.Tuition_fee+sc.Accomod_fee+sc.Food_fee) as 'Total Cost Sharing'
from student st left JOIN student_costsharing sc on st.id = sc.stud_id
left join department dp on st.dep_id=dp.id
where st.id not in ( SELECT stud_id
FROM student_costsharing
WHERE sc.stud_id=st.id
)
GROUP BY st.stud_fname
order by st.stud_fname
問題在於,子查詢的結果集應僅包含一列,因為您無法將where子句的操作數與表的整個結果集進行比較。 應該將哪一列與ID進行比較?
要解決此問題,您需要選擇要與之進行比較的表的一列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.