我的数据库中有此数据:
musterid | musterdate | userid | status
---------+---------------------+----------+-------
69 | 2017-09-01 11:58:37 | 50 | 1
70 | 2017-09-01 12:00:07 | 50 | 1
71 | 2017-09-01 12:29:15 | 50 | 1
72 | 2017-09-01 12:31:15 | 50 | 1
73 | 2017-09-01 09:58:37 | 51 | 1
74 | 2017-09-01 11:00:07 | 51 | 1
75 | 2017-09-01 12:29:15 | 51 | 1
76 | 2017-09-01 07:31:15 | 51 | 1
我想要这样的输出:
musterid | musterdate | userid | status
---------+---------------------+----------+-------
69 | 2017-09-01 11:58:37 | 50 | 1
72 | 2017-09-01 12:31:15 | 50 | 1
73 | 2017-09-01 09:58:37 | 51 | 1
76 | 2017-09-01 07:31:15 | 51 | 1
即我想获取每个用户的第一次和最后一次进入时间。
如何实现这一目标?
我不知道如何创建一个表来表示数据,所以对我的演示感到抱歉。
最佳答案
获取“每个用户的首次和最后进入时间”的复杂查询:
SELECT
t1.*
FROM
yourtable t1
LEFT JOIN
(SELECT
MIN(musterdate) AS min_mdate,
MAX(musterdate) AS max_mdate,
userid
FROM
yourtable
GROUP BY userid) t2 ON t1.userid = t2.userid
WHERE
t1.userid = t2.userid
AND t1.musterdate IN (t2.min_mdate , t2.max_mdate)
ORDER BY userid , musterdate;
关于mysql - 使用 SQL 查询获取每天的第一次和最后一次时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995565/