Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NOT in运算符在MySql中选择的问题?_Mysql - Fatal编程技术网

使用NOT in运算符在MySql中选择的问题?

使用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

我使用以下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_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…对您有效吗?如果有效,请接受我的答案…非常有用的想法。谢谢。这个主意很有用。谢谢。我接受了,然后投票支持我。我接受了,然后投票支持我。