2016-03-07 186 views
2

我已经在我的Moodle中dbtablesessionsessidtimestart。该表是这样的:从SQL中获取时间戳的第一个日期

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

如何获得来自SQLtimestampseverysessionfirstdate

+0

你需要输出'sessid/timestart'或'id/sessid/timestart'吗? – lad2025

回答

2

你可以很容易使用:

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; 
+0

如何显示它是否是“第一次约会”,简称为“是”或“否”?谢谢。 – StartVader

+0

我已经扩展了我的答案 –

0

查询

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; 
+0

以及如何比较sessid中的'timestart'?就像'CASASE WHEN myTbl.timestart <“会议中的其他人一样”THEN Yes ELSE No END“?谢谢 – StartVader

0

试试这个。

SELECT 
    * 
FROM 
    tbl 
WHERE 
    (sessid, timestart) IN (
     SELECT tbl2.sessid, MIN(tbl2.timestart) 
     FROM tbl tbl2 
     WHERE tbl.sessid = tbl2.sessid 
    ); 
相关问题