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

Get first date from timestamp in SQL

我的 Moodle db table 每个 session sessidtimestart。 table 看起来像这样:

+----+--------+------------+
| id | sessid | timestart  |
+----+--------+------------+
|  1 |      3 | 1456819200 |
|  2 |      3 | 1465887600 |
|  3 |      3 | 1459839600 |
|  4 |      2 | 1457940600 |
|  5 |      2 | 1460529000 |
+----+--------+------------+

如何从 SQL 中的 timestamps 获取 every session first date

你可以很容易地使用这个:

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
    );