繁体   English   中英

有关内部连接SQL帮助并不能解决这个查询

[英]SQL Help cant solve this query about inner joins

我必须弄清楚哪些游泳者在同一事件中获得相同的位置。 对于每对这样的游泳者,我必须显示一行,显示事件ID,地点和所涉及的每个游泳者的选手编号。

eventid  place  competitors tied

SWM012  2   1072528 1099641

SWM021  2   1018529 1061698

到目前为止,这是我的代码

select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2 
where R1.Place = R2.Place
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum

这是输出

eventid  Place   competitornum    competitornum

SWM010   1       1121587           1056740

SWM010   1       1121587           1061698

依此类推,第一列的相同竞争对手编号与第二列的不同

我只想知道如何获得上面描述中的输出

首先,您可能还需要加入事件ID

select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum

上面的查询返回与此相同的结果

select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId

但这将返回所有唯一的“联系”对。 一种解决方法是

select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId AND R1.Competitornum > R2.Competitornum

但是,这仅适用于双向联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM