请教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
...全文
176 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2015-12-10
  • 打赏
  • 举报
回复
引用 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不唯一。

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧