выберите отличное не работает, как ожидалось - PullRequest
4 голосов
/ 05 марта 2012

Студенческий групповой стол:

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

Мне нужны уникальные идентификаторы студентов, а также их соответствующие идентификаторы колледжей.

Я пробовал этот запрос:

select distinct(studentId),collegeID from;

и

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

Ответы [ 3 ]

7 голосов
/ 05 марта 2012

Использование DISTINCT без скобок должно дать вам то, что вы хотите. DISTINCT следует рассматривать как предложение, а не функцию, которой вы передаете имя столбца в качестве аргумента. Он возвращает набор отдельных строк над расширенным набором, возвращаемым запросом, а не отдельные значения в одном столбце.

SELECT DISTINCT
  studentId,
  CollegeID
FROM STUDENT_GROUP
2 голосов
/ 05 марта 2012

Вы можете использовать это для несортированных результатов:

select distinct studentid, collegeid from stdnt_group

Или это:

select studentid, collegeid from stdnt_group
group by studentid, collegeid

Или вы можете добавить заказ по предложению к любому из них, чтобы получить их по порядку:

[previous query]
order by studentid, collegeid
1 голос
/ 05 марта 2012

Проблема может заключаться в использовании вами парантеза в отдельном призыве.Попробуйте просто:

      SELECT DISTINCT studentID, collegeID

Может быть полезно указать, какой вывод вы фактически получаете, а не только ожидаемый.Это может помочь нам лучше определить, что может пойти не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...