数据库操作,筛选数据

1,根据数据表中姓名和身份证,筛出有重复的行(只显示一行)(只显示一个A和一个B)
2,根据数据表中姓名和身份证,筛出没有重复的行(只显示C和D)
3,根据身份证,筛出所有不重复的行(显示一个A一个B,C和D)
图片说明

1:SELECT a,b from van GROUP BY a,b HAVING count(1)>1;
2:SELECT a,b from van GROUP BY a,b HAVING count(1)<2;
3:SELECT * from van where id not in(
SELECT max(t.id) aid from van t group by t.a HAVING count(1)<2
union ALL
SELECT max(y.id) aid from van y group by y.b HAVING count(1)<2
union ALL
SELECT max(u.id) aid from van u group by u.c HAVING count(1)<2
union ALL
SELECT max(i.id) aid from van i group by i.d HAVING count(1)<2
);

图片说明

这是表结构、第三个感觉没什么意义,需要借助ID来实现