思路:
两种思路,可以给当成两个表也可以给当成一张表来做
group by就是按照某个属性给表分个组,然后having语句的含义是“对于每一个group”怎么怎么样
补充知识:count(column),count(distinct column),count(*)的区别
对于符合条件(通过where或者group by+having选出来)的一系列的元组,count(*)的作用是计算出他们所有的行数
而count(col)的作用是对于选出所有元组的col这一列不为NULL的行数
而count(distinct col)有了上面的基础就会比较好理解,就是所有元组的col这一列不为NULL而且不重复的元组个数
然后!=在SQL中用<>来表示
way 1:
select a.Email
from Person as a,Person as b
where a.Id <> b.Id and a.Email = b.Email
way 2:
select Email
from Person
group by Email
having count(*) > 1