使用NOT in运算符在MySql中选择的问题?
我使用以下mysql查询选择了所有选择的信息,其中student表的student id在CostShared表中不存在,但我遇到了一个错误 有什么帮助吗?提前谢谢使用NOT in运算符在MySql中选择的问题?,mysql,Mysql,我使用以下mysql查询选择了所有选择的信息,其中student表的student id在CostShared表中不存在,但我遇到了一个错误 有什么帮助吗?提前谢谢 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_du
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列
您需要在子句的
中指定列,而不是使用*
where st.id not in ( SELECT stud_id
FROM student_costsharing
WHERE sc.stud_id=st.id
)
您需要在
子句的中指定列,而不是使用*
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 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进行比较
要解决此问题,您需要选择表中要与值进行比较的一列。问题是,子查询的结果集应仅包含一列,因为您无法将where子句的操作数与表的整个结果集进行比较。
应该将哪个列与id进行比较
为了解决这个问题,,您需要选择表中要与您的值进行比较的一列。将select*更改为clouse中的id…对您有效吗?如果有效,请接受我的答案…将select*更改为clouse中的id…对您有效吗?如果有效,请接受我的答案…非常有用的想法。谢谢。这个主意很有用。谢谢。我接受了,然后投票支持我。我接受了,然后投票支持我。