Sql多表联合查询出现重复记录的问题

时间:2021-02-09 06:29:18
,我有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表是主表一样

5 个解决方案

#1


on 那里你的主键没写全吧。

#2


引用 1 楼 DBA_Huangzj 的回复:
on 那里你的主键没写全吧。

都不是主键,他们2个的主键不一样的

#3


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

#4


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表有就显示,没有就显示为空

#5


哦了,换成left join就可以了

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


给了启发,,谢谢

#1


on 那里你的主键没写全吧。

#2


引用 1 楼 DBA_Huangzj 的回复:
on 那里你的主键没写全吧。

都不是主键,他们2个的主键不一样的

#3


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

#4


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表有就显示,没有就显示为空

#5


哦了,换成left join就可以了

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


给了启发,,谢谢