sql 筛选屋无重复数据的一点注意

来源:互联网 发布:搞笑小黄鸡软件下载 编辑:程序博客网 时间:2024/05/16 12:00

较广泛的筛选无重复数据的一种方法大概是如下格式

select * from table where column1 in (select min(column1) from student group by column2);

也就是一重复数据分组, 每组提出一个值(最大,最小或者其他),利用这个值去排除其他数据。思路是不错的,但是要注意的一点问题是这个值可能会受到其他组的影响,举例如下。

首先,完整表如下:

7001  tian747002  zhang747003  yan747004  li747005  lia737006  liy727007  tian757008  tian757009  tian767010  tian737011  li767012  li73



想选出无重复名字的数据。
select * from student where grade in (select min(grade) from student group by sname);
查询结果如下:
7001  tian747002  zhang747003  yan747004  li747005  lia737006  liy727010  tian737012  li73



发现名字还是有重复的, 因为虽然min(grade)在每个组只有一个,但是其他组的min(grade)未必与本组的相同,所以还是会有重复,这说明用来区别的列必须要唯一确定这条记录,所以采用主键才能保证唯一性。
select * from student where sno in (select min(sno) from student group by sname);

7001  tian747002  zhang747003  yan747004  li747005  lia737006  liy72




0 0
原创粉丝点击