Mysql 从SQL中的时间戳获取第一个日期
我的MoodleMysql 从SQL中的时间戳获取第一个日期,mysql,sql,moodle,Mysql,Sql,Moodle,我的Moodledb表中有每个会话的会话ID和timestart。该表如下所示: +----+--------+------------+ | id | sessid | timestart | +----+--------+------------+ | 1 | 3 | 1456819200 | | 2 | 3 | 1465887600 | | 3 | 3 | 1459839600 | | 4 | 2 | 1457940600 | | 5 |
db
表中有每个会话的会话ID
和timestart
。该表如下所示:
+----+--------+------------+
| id | sessid | timestart |
+----+--------+------------+
| 1 | 3 | 1456819200 |
| 2 | 3 | 1465887600 |
| 3 | 3 | 1459839600 |
| 4 | 2 | 1457940600 |
| 5 | 2 | 1460529000 |
+----+--------+------------+
如何从SQL
中的时间戳中获取每个会话的第一个日期?您可以轻松地使用:
select sessid,min(timestart) FROM mytable GROUP by sessid;
第二个问题是这样的:
SELECT
my.id,
my.sessid,
IF(my.timestart = m.timestart, 'yes', 'NO' ) AS First,
my.timestart
FROM mytable my
LEFT JOIN
(
SELECT sessid,min(timestart) AS timestart FROM mytable GROUP BY sessid
) AS m ON m.sessid = my.sessid;
查询
select sessid, min(timestart) as timestart
from your_table_name
group by sessid;
如果您甚至需要id
,请使用另一个透视图
select t.id, t.sessid, t.timestart from
(
select id, sessid, timestart,
(
case sessid when @curA
then @curRow := @curRow + 1
else @curRow := 1 and @curA := sessid end
) as rn
from your_table_name t,
(select @curRow := 0, @curA := '') r
order by sessid,id
)t
where t.rn = 1;
试试这个
SELECT
*
FROM
tbl
WHERE
(sessid, timestart) IN (
SELECT tbl2.sessid, MIN(tbl2.timestart)
FROM tbl tbl2
WHERE tbl.sessid = tbl2.sessid
);
您是否需要在输出sessiond/timestart
或id/sessiond/timestart
中显示它是否是第一个日期
仅显示为是
或否
?谢谢。我已经扩展了我的回答,以及如何比较sessiond中的timestart
?类似于“当mytbl.timestart<“会话中的其他timestart”时的情况,然后是“否则没有结束”?谢谢