Mysql 从SQL中的时间戳获取第一个日期

Mysql 从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 |

我的Moodle
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”时的情况,然后是“否则没有结束”?谢谢