假设我有一个这样的结果表:
| exam | score | user_id |
| 1 | 78 | 1 |
| 2 | 80 | 1 |
| 1 | 27 | 2 |
| 2 | 90 | 2 |
我想选择所有结果,其中考试= 2,但同一位用户在第一次考试中至少获得50分。
所以,例如像这样的东西(我意识到这与SQL无关):
SELECT * from results r WHERE (for r.user WHERE r.exam = 2 FIND r.exam = 1 REQUIRE score > 50) AND r.exam = 2.
答案 0 :(得分:2)
我会像你在问题中那样表达:
select r.*
from results r
where r.exam = 2 and
exists (select 1
from results r2
where r2.userid = r.userid and
r2.exam = 1 and r2.score >= 50
);
答案 1 :(得分:1)
首先,选择在第一次考试中得分大于或等于50的所有用户。然后根据user_id
加入表格。
SELECT *
FROM Table
WHERE user_id IN(
SELECT T.user_id
FROM Table T
WHERE T.exam_id=1
AND T.score >= 50)
AND exam_id =2;