1

在查看即将到来的考试的试卷时,我和我的小组被一个问题难住了。

“编写一个 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 表。

如果有人可以就解决方案的前提是什么或如何解决这个问题给出任何指导,那就太好了。

4

2 回答 2

1

您将答案表述为相关子查询,然后将连接条件放入子查询中。

从句中根本不允许相关子查询from

但是,在适当的条件下,很容易将其表述为简单的自联接。

我会让你计算出特定的查询。

顺便说一句,您的逻辑表明event_id是相同的。也许这是问题所暗示的,但没有明确说明。

于 2013-04-30T21:59:23.183 回答
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
于 2013-04-30T22:06:29.137 回答