现在联合查询
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
都不是主键,他们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表有就显示,没有就显示为空
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就可以了
给了启发,,谢谢
给了启发,,谢谢
#1
on 那里你的主键没写全吧。
#2
都不是主键,他们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表有就显示,没有就显示为空
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就可以了
给了启发,,谢谢
给了启发,,谢谢