唯一的意思是,如果有一个值有一个重复项,就不要显示它们中的任何一个。例子:
Student | College ----------------------- Jake | Harvard Josh | Penn State Erica | Harvard
所以在这种情况下,结果是
Penn State
问题是,只有一个学生上的学校。我想在不使用count(*)的情况下执行此操作。
f4t66c6m1#
您可以在college字段和其他student上使用self-left连接,只返回那些不匹配的记录:
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
ulmd4ohb2#
假设没有严格的副本,可以使用 not exists 看看学校里还有没有其他学生:
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 );
ig9co6j13#
不使用的限制 count 听起来有点做作,但假设 student 以及 college 是唯一的,您可以比较每个学院的最大值和最小值,并确保它们是同一个学生:
count
student
college
SELECT college FROM mytable GROUP BY college HAVING MIN(student) = MAX(student)
twh00eeo4#
你可以用 LAG() 以及 LEAD() ,例如:
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
4条答案
按热度按时间f4t66c6m1#
您可以在college字段和其他student上使用self-left连接,只返回那些不匹配的记录:
ulmd4ohb2#
假设没有严格的副本,可以使用
not exists
看看学校里还有没有其他学生:ig9co6j13#
不使用的限制
count
听起来有点做作,但假设student
以及college
是唯一的,您可以比较每个学院的最大值和最小值,并确保它们是同一个学生:twh00eeo4#
你可以用
LAG()
以及LEAD()
,例如: