如何通过mysql获取数据

时间:2017-10-19 05:44:15

标签: mysql

我有以下列表播放器。

+-----------+------------+------------+
| player_id | mission_id | reg_time   |
+-----------+------------+------------+
|         1 |          1 | 1508392600 |
|         1 |          2 | 1508392800 |
|         1 |          3 | 1508392900 |
|         1 |          4 | 1508392822 |
|         2 |          1 | 1508392500 |
|         2 |          2 | 1508392600 |
|         2 |          3 | 1508392900 |
|         3 |          1 | 1508392600 |
|         3 |          2 | 1508392600 |
|         3 |          3 | 1508392900 |
|         3 |          4 | 1508392900 |
|         4 |          1 | 1508392600 |
|         4 |          3 | 1508392900 |
+-----------+------------+------------+

我希望所有的player_id都有

mission_id = 1,2和reg_time< = 1508392800和

mission_id = 3,4和reg_time> 1508392800如下

+-----------+------------+------------+
| player_id | mission_id | reg_time   |
+-----------+------------+------------+
|         1 |          1 | 1508392600 |
|         1 |          2 | 1508392800 |
|         1 |          3 | 1508392900 |
|         1 |          4 | 1508392822 |
|         3 |          1 | 1508392600 |
|         3 |          2 | 1508392600 |
|         3 |          3 | 1508392900 |
|         3 |          4 | 1508392900 |
+-----------+------------+------------+

我如何通过mysql做到?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此代码来获得所需的结果。

SELECT * 
from `players` AS p 
where (exists (select * 
             from `players` as p1 
             where p1.player_id = p.player_id 
                   AND p1.mission_id = 1 AND p1.reg_time <= 1508392800 ) 
     AND exists (select * 
             from `players` as p2 
             where p2.player_id = p.player_id 
                   AND p2.mission_id = 2 AND p2.reg_time <= 1508392800)) 
AND (exists (select * 
             from `players` as p3 
             where p3.player_id = p.player_id 
                   AND p3.mission_id = 3 AND p3.reg_time > 1508392800) 
     AND exists (select * 
             from `players` as p4 
             where p4.player_id = p.player_id 
                   AND p4.mission_id = 4 AND p4.reg_time > 1508392800))