0

我正在尝试从假设表“结果”中选择在同一事件中获得相同排名的竞争对手。有谁知道这个查询有什么问题?

我似乎只得到相同的竞争对手编号,而不是不同的竞争对手编号。

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
4

1 回答 1

0

Anatural join过滤所有相同的字段。这意味着您当前的where条款是多余的。这也意味着连接条件包括Compititornum,解释为什么你只得到相同的行Competitornum

而不是一个natural join,尝试一个inner join。使用 aninner 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
于 2012-09-12T03:44:11.560 回答