我正在尝试从一个假设的表格“结果”中选择在相同事件中获得相同位置的竞争者。有谁知道这个查询有什么问题?
我似乎只能获得相同的竞争对手数字而不是不同的竞争对手数字。
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
答案 0 :(得分:0)
所有相同字段的natural join
个过滤条件。这意味着您当前的where
条款是多余的。它还表示连接条件包含Compititornum
,解释了为什么您只获得具有相同Competitornum
的行。
而不是natural join
,请尝试inner 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.Competitornum