日期:2014-05-17  浏览次数:20617 次

Sql多表联合查询出现重复记录的问题
,我有2张表A,S,A表是主表,A表中有的数据B表不一定有
现在联合查询
SELECT    
 a.StuId,  s.*
FROM         SourceStuAndCoursearrange AS a  left  JOIN
                    dbo.Scores AS s  on  s.stuid=a.stuid
                    where a.stuid=9678 

正常情况应该有8条记录的,但是S表有3条记录,他就会出现24条也就是8的3倍的记录,
而且S表的字段会重复显示8变,就想S表是主表一样
------最佳解决方案--------------------
如果关联的时候没有用主键,那重复数据是有可能的,因为主键本来就是唯一标识一条数据。而没用到,就证明标识不了。
------其他解决方案--------------------
on 那里你的主键没写全吧。
------其他解决方案--------------------
引用:
on 那里你的主键没写全吧。

都不是主键,他们2个的主键不一样的
------其他解决方案--------------------
SELECT    
 a.StuId,  s.*
FROM         SourceStuAndCoursearrange AS a  inner  JOIN
                    dbo.Scores AS s  on  s.stuid=a.stuid and s.coursearrangeid=a.coursearrangeid
                    where a.stuid=9678 
这样的话就只有3条了
就是AA表的数据不可以重复,如果stuid和coursearrangeid这2个字段在B表有就显示,没有就显示为空
------其他解决方案--------------------
哦了,换成left join就可以了

引用:
如果关联的时候没有用主键,那重复数据是有可能的,因为主键本来就是唯一标识一条数据。而没用到,就证明标识不了。


给了启发,,谢谢