2016-03-07 62 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 
    );