过滤表重复数据的问题
假如有个表A,有name,id,age三列,我想要找出name,id,age3个都不重复的数据,如
name id age
zhangsan 1 18
zhangsan 2 19
lisi 2 30
wanwu 3 18
zhaoliu 4 21
过滤的结果是得到最后条数据,sql如何实现?
追问:如果表的列有很多,又改如此处理
SQL
重复
------解决方案--------------------
第一种方式:
select distinct x, y from t;
第二种方式:
select x,y from t group by x,y
推荐第二种方式
------解决方案--------------------你的意思可以理解为两种,意思一:
检索出表中所有结果,以三者为关键字,不允许有重复的
select distinct name,id,age from t;
select name,id,age from
(select name,id,age,count(1) from t group by name,id,age);
意思二:
检索出表中的所有结果,如果有三者都相同的,就不检索出来
select name,id,age from
(select name,id,age,count(1) from t group by name,id,age
having count(1) < 2);
------解决方案--------------------我的方法比较笨,但一定能实现结果。
依据三个列建立三张临时表,分别保存区中后的数据。然后再和表a进行关联,用四个表之间的内连接的方式。