当我们使用嵌套查询

时间:2016-09-25 19:18:58

标签: mysql oracle group-by max

select * 
from student_database 
where BTECH_CGPA in (SELECT max(BTECH_CGPA) 
             FROM student_database 
          group by SPECILIZATION);

这样可以选择48行,但它应该是29行,而没有与其他部门重复的最大cgpa。

示例:

       BTECH_CGPA            SPECILIZATION

           9.55              CSE A 
           9.79              CSE B
           9.55              CSE B (again)

请任何人帮助我

1 个答案:

答案 0 :(得分:0)

如果你有48行,这意味着在student_database中有更多的行可以用于in子句的结果..(因为subselect中的group by确保你只得到不同的结果)

在这种情况下,如果您想在主选择中使用不同的结果,则不能使用*,但必须使用distinct子句明确设置所需的列。例如:

select distinct col1, col2
from student_database 
where BTECH_CGPA in (SELECT max(BTECH_CGPA) 
         FROM student_database 
      group by SPECILIZATION);