我正在尝试从一个假设表“结果”中选择在同一事件中获得相同排名的竞争者。有人知道这个查询出了什么问题吗?
我似乎只得到了彼此相邻的相同的竞争对手号码,而不是不同的竞争对手号码。
Select Eventid, Place, c1.Competitornum, c2.Competitornum
From Results natural join Results c2
Where c1.Place = c2.Place
and c1.Eventid = c2.Eventid
Order by Eventid, Place发布于 2012-09-12 11:44:12
natural join对所有相同的字段进行过滤。这意味着您当前的where子句是多余的。它还意味着连接条件包含Compititornum,这解释了为什么只获得具有相同Competitornum的行。
尝试使用inner join,而不是natural join。使用inner join,您可以在on子句中显式设置联接条件:
select c1.Eventid
, c1.Place
, c1.Competitornum
, c2.Competitornum
from Results c1
inner join
Results c2
on c1.Place = c2.Place
and c1.Eventid = c2.Eventid
and c1.Competitornum <> c2.Competitornumhttps://stackoverflow.com/questions/12380839
复制相似问题