请教SQL问题---------为什么不存在的记录也查询出来了?

qq_29117463 2015-12-09 11:40:03
是这样的,Weigh是一个过磅记录表,InStoreSub是一个入库明细表,入库明细表中的WeighNo和过磅记录表的WeighNo对应,
现在的情况是,
Weigh有8条记录,
InStoreSub有3条记录,
但为什么用了下面的查询,查出的却是8条,而不是3条?

因为我想以InStoreSub的记录数为准,
我试着用Left out 什么的,还是没用..
怎么改?



select * from Weigh
select * from InStoreSub

select a.InNo,a.WeighNo,a.PartID,a.PartName,b.FullName from InStoreSub a,Weigh b where a.WeighNo=b.WeighNo
...全文
120 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
引用 5 楼 qq_29117463 的回复:
算了,解决方案只有一个了. 就是不要让Weigh表重复....
还有一个办法就是,先把Weigh表去重,然后再和其他表关联,就可以了,这样就不会有重复了
回复
Tiger_Zhao 2015-12-09
A)Weigh.WeighNo 有重复。
B)你的3句查询有3个结果,你只看了第一个结果?
回复
许晨旭 2015-12-09
你写的是交叉连接
SELECT 
	a.InNo,
	a.WeighNo,
	a.PartID,
	a.PartName,
	b.FullName
FROM InStoreSub a
INNER JOIN Weigh b ON a.WeighNo=b.WeighNo
回复
qq_29117463 2015-12-09
算了,解决方案只有一个了. 就是不要让Weigh表重复....
回复
等不到来世 2015-12-09
--写法1:
select a.InNo,a.WeighNo,a.PartID,a.PartName
	,FullName=(select top 1 FullName from Weigh where WeighNo=a.WeighNo)
from InStoreSub a

--写法2:
select a.InNo,a.WeighNo,a.PartID,a.PartName,b.FullName from InStoreSub a,
	(select distinct WeighNo,FullName from Weigh) b
where a.WeighNo=b.WeighNo

--写法3:
select distinct a.InNo,a.WeighNo,a.PartID,a.PartName,b.FullName from InStoreSub a,Weigh b where a.WeighNo=b.WeighNo 
回复
Yole 2015-12-09
WeighNo不唯一。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-12-09 11:40
社区公告
暂无公告