选择distinct不按预期工作

时间:2012-03-05 18:47:14

标签: sql oracle

学生组表:

STDNT_GROUP

studentId,CollegeID,studentgroup,flag
1,007,panthers,y
2,003,owls,n
3,007,owls,y
1,007,texans,y
2,003,texans,n

预期输出

1,007
2,003
3,007

我想要独特的学生ID以及他们各自的大学生。

我尝试了这个查询:

select distinct(studentId),collegeID from;

select studentId,collegeID from STDNT_GROUP where studentId in(select distinct(studentId) from STDNT_GROUP)";

3 个答案:

答案 0 :(得分:7)

使用不带括号的DISTINCT可以获得您想要的效果。 DISTINCT应该被视为一个子句,而不是将列名称作为参数传递给的函数。它返回查询返回的超集上的不同的集合,而不是单个列中的不同值。

SELECT DISTINCT
  studentId,
  CollegeID
FROM STUDENT_GROUP

答案 1 :(得分:2)

您可以将此用于未排序的结果:

select distinct studentid, collegeid from stdnt_group

或者这个:

select studentid, collegeid from stdnt_group
group by studentid, collegeid

或者您可以向其中任何一个添加order by子句以按顺序检索它们:

[previous query]
order by studentid, collegeid

答案 2 :(得分:1)

问题可能是您在不同的调用中使用了paranthesis。试试吧:

      SELECT DISTINCT studentID, collegeID

提供实际获得的输出而不仅仅是预期的输出可能会有所帮助。这可能有助于我们更好地确定可能出现的问题。