假设我有
+----------+--------+-----------+
| RACE_ID | NAME | POSITION |
+----------+--------+-----------+
使用主键
+----------+--------+
| RACE_ID | NAME |
+----------+--------+
对于特定的竞争对手,我想显示名称加上比赛的获胜者。比赛的获胜者是给定RACE_ID的POSITION = 1的人。如下所示
SELECT NAME, (???) AS WINNER where NAME='Thorpe'
我不确定是什么进来???我正在使用Postgres。
答案 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)