加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SQL两个表连接查询去掉重复数据的方法

(2012-04-28 10:36:54)
标签:

sql

查询语句

表连接

去重复

分类: 〖Database〗
因为表B_CallNo有重复的CtrlNo,导致查询的结果也有重复了。我要的结果是4(正确的),但是查询结果是8(错误的)。下面给出解决方法:

-----------------------用下面的语句实现(两种方法)----------------
SQL code
方法一(容易理解些):
select substring( CallNo , 1 ,2 ) as class , count(distinct Barcode) as Total 
from  B_CallNo a , B_Barcode b 
where a.CtrlNo = b.CtrlNo 
group by substring( CallNo , 1 ,2
order by Total desc

SQL code
方法二:
select substring( CallNo , 1 ,2 ) as class , count(Barcode) as Total 
from (select distinct CtrlNo , CallNo from B_CallNo ) a , B_Barcode b 
where a.CtrlNo = b.CtrlNo 
group by substring( CallNo , 1 ,2
order by Total desc

---------------以下是给大家的调试准备的语句----------------
--表B_CallNo--
create table B_CallNo
(ID int primary key identity(1,1),
 CtrlNo int,
 CallNo varchar(50),
 Lib int
)
insert into B_CallNo(CtrlNo, CallNo, Lib) values('101','TP393',1)
insert into B_CallNo(CtrlNo, CallNo, Lib) values('101','TP393',2)

--表B_Barcode--
create table B_Barcode
(ID int primary key identity(1,1),
 Barcode varchar(50),
 CtrlNo int
)
insert into B_Barcode(Bardcode , CtrlNo) values('A0001','101')
insert into B_Barcode(Bardcode , CtrlNo) values('A0002','101')
insert into B_Barcode(Bardcode , CtrlNo) values('A0003','101')
insert into B_Barcode(Bardcode , CtrlNo) values('A0004','101')

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有