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 那里你的主键没写全吧。 ------其他解决方案--------------------
都不是主键,他们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就可以了