2017-01-11 6 views
0

Существует таблица: "SelectCourse" с этими колонками: StuNum, Term, ... Все взятые курсы со всех условий хранятся в этой таблице. теперь я хочу, чтобы выяснить, какие StuNum нового в этом плане, например, мы имеем:sql найти новых учеников школы

StuNum  Term 
101  201 
101  202 
102  202 

так 102 новый студент и нет каких-либо курсов для него в последние сроки. Мне нужно выбрать всех студентов, таких как 102

+0

как мы можем определить последний термин/текущий термин? –

+1

Используете ли вы MySQL или MS SQL Server? (Не помещайте те продукты, которые не участвуют.) – jarlh

+0

@AbdulRasheed термины являются автоматическими номерами, поэтому последний (или максимальный) является последним членом –

ответ

4

С вашего поста похоже, что вы пытаетесь найти StuNum, для которого есть только один Term. Если это так, то вы, вероятно, можете использовать group by как

select StuNum  
from SelectCourse 
group by StuNum 
having count(distinct StuNum) = 1 
+0

Или, может быть, наоборот, найти все StuNum Где Count (Term)> 1 ... – Peter

0

Если вам необходимо выбрать Условие:

select StuNum 
from SelectCourse 
where Term = 202 
and StuNum not in (
    select StuNum from SelectCourse 
    where Term = 201 
) 
+1

Обратите внимание, что 'NOT IN' является немного опасным, если нулевые значения возвращаются из подзапроса. Вот почему я всегда делаю «НЕ СУЩЕСТВУЕТ»! – jarlh

0

Так что вы хотите студентов, зарегистрированных на этот срок или позже?

select StuNum 
from SelectCourse 
where Term >= 202 
+0

здесь термин - текст :( –

+0

зарегистрирован на этот срок, а не на более старых условиях –