posts - 60,comments - 71,trackbacks - 0

    我们在做两张表或多张表的关联查询时,有时会碰到查出重复记录的情况,这对于查询来讲重复的数据是没有意义的,应该去掉,如有A表和B表,表的结构如下:

A表:  a_id varchar(10),a_name varchar(10),a_height varchar(10)
数据有:
1001,a_ffff,12
1002,a_eeee,16
1003,a_kkkk,13

B表:   b_id varchar(10),b_name varchar(10),b_length varchar(10)
数据有:
1001,b_pppp,20
1001,b_pppp,10
1002,b_yyyy,14
1003,b_www,12
1003,b_www,18

进行关联查询时: select A.a_id,A.a_name,A.a_height,B.b_namefrom A,B where A.a_id=B.b_id;(1)

这样就会查询到如下的数据:

1001,a_ffff,12,b_pppp
1001,a_ffff,12,b_pppp
1002,a_eeee,16,b_yyyy
1003,a_kkkk,13,b_www
1003,a_kkkk,13,b_www

这样就会造成有重复数据的情况,当然这和要查询的数据内容有关,即如果还要查询B表中的b_length 字段内容时,就不会是有重复记录的情况了,当然这和实际需求有关,如果需求只需要查询(1)中的内容,这就是会有重复记录了,解决的办法很简单,即在查询的字段前面加上distinct即可去掉重复记录了,
当然B表中的数据还有一个特点,即b_id相同的记录的b_name的数据是相同的,其他字段的数据可相同也可不同.

当然这只是举的一个例子,实际需求中肯定会有B表这样的数据的情况,另外,再说一下,这和要查询的字段内容有关,即(1)语句如果还要查询B表中的b_length 这个字段时,在上述测试的数据中,是不会存在相同记录的.

posted on 2008-07-31 21:55 henry1451 阅读(1071) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: