对于id = 2的条件,SQL select其中id = 1

时间:2017-05-28 16:27:07

标签: mysql sql

假设我有一个这样的结果表:

| 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. 

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;