如何在以下数据库模式中显示获胜者?

时间:2012-03-25 10:50:21

标签: sql postgresql

假设我有

 +----------+--------+-----------+
 |  RACE_ID |  NAME  | POSITION  |
 +----------+--------+-----------+

使用主键

 +----------+--------+
 |  RACE_ID |  NAME  |
 +----------+--------+

对于特定的竞争对手,我想显示名称加上比赛的获胜者。比赛的获胜者是给定RACE_ID的POSITION = 1的人。如下所示

SELECT NAME, (???) AS WINNER where NAME='Thorpe'

我不确定是什么进来???我正在使用Postgres。

3 个答案:

答案 0 :(得分:4)

假设表名是参赛者,我会尝试下面这样的事情:

SELECT con.NAME, win.NAME AS WINNER
  from contestant con
  join contestant win
    on win.race_id = con.race_id
   and win.position = 1
 where con.NAME='Thorpe'

答案 1 :(得分:1)

SELECT R1.NAME AS WINNER
FROM RaceTable AS R1 
   INNER JOIN RaceTable AS R2 ON R1.RACE_ID = R2.RACE_ID
WHERE R2.NAME = 'Thorpe' AND R1.Position = 1

答案 2 :(得分:0)

我认为你的例子不清楚。

我认为RaceID对应于比赛,name是竞争对手的名字,position是他们对该比赛的结果(这样主键有意义,这意味着每个名字只能在同一个比赛中一次)

假设我所说的是正确的,那么你已经得到了答案中的所有组件。你没有提到调用表的内容,但它应该有点像这样:

SELECT Name AS Winner
FROM table1
WHERE Position = 1
AND RaceID = ??

(正如你所说的那样,你想要一个给定的RaceID)