通过唯一性,我的意思是如果某个值具有重复项,则不要显示它们中的任何一个。
示例:
Student | College
-----------------------
Jake | Harvard
Josh | Penn State
Erica | Harvard
所以在这种情况下,结果将是
Penn State
查询将类似于只有一个学生去的学校。
我想不使用count(*)来执行此操作。
答案 0 :(得分:3)
不使用count
的限制听起来有些人为,但是假设student
和college
的组合是唯一的,您可以比较每所大学的最大和最小数目,并确保它们是同一位学生:
SELECT college
FROM mytable
GROUP BY college
HAVING MIN(student) = MAX(student)
答案 1 :(得分:3)
您可以在大学领域和其他学生上使用左撇子联接,并仅返回不匹配的记录:
select t1.college from yourtable t1
left join yourtable t2 on t1.collage=t2.college and t1.student<>t2.student
where t2.college is null
答案 2 :(得分:1)
您可以使用LAG()
和LEAD()
,如下所示:
select
*,
lag(college) over(order by college) as prev_college
lead(college) over(order by college) as next_college
from my_table
where college <> prev_college or prev_college is null
and college <> next_college or next_college is null
答案 3 :(得分:1)
假设您没有严格的重复要求,则可以使用not exists
来查看学院中是否还有其他学生:
select t.college
from t
where not exists (select 1
from t t2
where t2.college = t.college and t2.student <> t.student
);