2016-03-07 2 views
2

У меня в моем Moodle dbtable на каждые sessionsessid и timestart. Таблица выглядит следующим образом:Получить первое свидание с timestamp в SQL

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

Как добраться everysessionfirstdate из timestamps в SQL?

+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

i hav продлить мой ответ –

0

Query

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

И как сравнить «timestart» в sessid? Что-то вроде «CASE WHEN mytbl.timestart <» theothertimestarts в сеансе «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 
    ); 
Смежные вопросы