在为即将到来的考试进行试卷时,我和我的小组都被一个问题困扰了。
“编写一个SQL查询,它将返回一个包含所有结果对的表格。您的表格应列出每个竞争者的ID,两个事件ID和时间。”
对于下表:
compid eventid duration
1 1 150
1 2 167
1 3 133
2 2 145
2 3 182
3 3 179
3 1 179
我的目标是:
SELECT r1.compid, r1.duration, r1.eventid, r2.eventid
FROM Results r1, (
SELECT eventid
FROM Results r2
WHERE r1.eventid = r2.eventid AND r1.compid = r2.compid AND r1.duration = r2.duration
) r2;
但我似乎无法从嵌套表中引用r1表。
如果有人能就解决方案的前提或如何解决这个问题给出任何指示,那就太棒了。
答案 0 :(得分:1)
您将答案称为相关子查询,然后将连接条件放入子查询中。
from
clauases中根本不允许相关的子查询。
但是,在适当的条件下,很容易将其称为简单的自联接。
我会让你解决这个问题。
顺便说一句,你有逻辑说明event_id
是相同的。也许问题暗示了这一点,但没有明确说明。
答案 1 :(得分:0)
我没有意识到你可以自己加入一张桌子。但那之后很容易。干杯。任何有兴趣的人的解决方案:
SELECT r1.compid, r1.eventid, r2.eventid, r1.duration
FROM Results r1, Results r2
WHERE r1.compid = r2.compid AND r1.duration = r2.duration AND r1.eventid != r2.eventid
GROUP BY r1.duration