自连接的排序问题
Ordering issues with self join
我有2张桌子。评论者有 2 列(rID、姓名)和评级有 3 列(rID、mID、星)。我想 select 所有评论家对,以便两位评论家都对同一部电影进行评分。查询应 return 两位审稿人的姓名,消除重复项,并 return 每对的姓名按字母顺序排列。我的代码是:
select distinct Re1.name, Re2.name
from Reviewer Re1, Rating R1, Rating R2, Reviewer Re2
where R1.mID = R2.mID
and Re1.rID = R1.rID
and Re2.rID = R2.rID
and R1.rID <> R2.rID
group by R1.mid
order by Re1.name
它产生这个:
Ashley White Chris Jackson
Chris Jackson Brittany Harris
Elizabeth Thomas Daniel Lewis
James Cameron Elizabeth Thomas
Mike Anderson Sarah Martinez
... 而预期结果是:
Ashley White Chris Jackson
Brittany Harris Chris Jackson
Daniel Lewis Elizabeth Thomas
Elizabeth Thomas James Cameron
Mike Anderson Sarah Martinez
我错过了什么?
使用 R1. r ID < R2. r ID
而不是 <>
。
这样就可以根据ID
来控制顺序了。
如果订单应该基于姓名,则保留您原来的 ON
条件并 添加 R1. name < R2. name
.
我有2张桌子。评论者有 2 列(rID、姓名)和评级有 3 列(rID、mID、星)。我想 select 所有评论家对,以便两位评论家都对同一部电影进行评分。查询应 return 两位审稿人的姓名,消除重复项,并 return 每对的姓名按字母顺序排列。我的代码是:
select distinct Re1.name, Re2.name
from Reviewer Re1, Rating R1, Rating R2, Reviewer Re2
where R1.mID = R2.mID
and Re1.rID = R1.rID
and Re2.rID = R2.rID
and R1.rID <> R2.rID
group by R1.mid
order by Re1.name
它产生这个:
Ashley White Chris Jackson
Chris Jackson Brittany Harris
Elizabeth Thomas Daniel Lewis
James Cameron Elizabeth Thomas
Mike Anderson Sarah Martinez
... 而预期结果是:
Ashley White Chris Jackson
Brittany Harris Chris Jackson
Daniel Lewis Elizabeth Thomas
Elizabeth Thomas James Cameron
Mike Anderson Sarah Martinez
我错过了什么?
使用 R1. r ID < R2. r ID
而不是 <>
。
这样就可以根据ID
来控制顺序了。
如果订单应该基于姓名,则保留您原来的 ON
条件并 添加 R1. name < R2. name
.