MySql Select Destinct с двумя таблицами и отметкой времени - PullRequest
0 голосов
/ 01 августа 2011

Я хочу выбрать Инфо по метке времени и UnitID. Вот две таблицы:

Таблица информации:

 ID | UnitID |       Time            | Info   
 -----------------------------------------------
 1  |  101   |  2011-07-20 08:22:02  |  info 101
 2  |  102   |  2011-07-21 08:22:02  |  info 102
 3  |  103   |  2011-07-22 08:22:02  |  info 103
 4  |  104   |  2011-07-23 08:22:02  |  info 104
 5  |  104   |  2011-07-25 08:22:02  |  info 104
 6  |  102   |  2011-07-26 08:22:02  |  info 102

Я хочу получить один результат для каждого UnitID и самое последнее время (метку времени) для этого UnitID как:

 ID | UnitID |       Time             |  Info   
 ------------------------------------------------
 1  |  101   |   2011-07-20 08:22:02  |  info 101
 3  |  103   |   2011-07-22 08:22:02  |  info 103
 5  |  104   |   2011-07-25 08:22:02  |  info 104
 6  |  102   |   2011-07-26 08:22:02  |  info 102

Как мне сделать этот запрос?

Ответы [ 3 ]

1 голос
/ 01 августа 2011
SELECT t1.ID, t1.UnitID, t2.MaxTime, t1.Info
FROM Info t1
INNER JOIN (SELECT UnitID, MAX(Time) As MaxTime 
            FROM Info
            GROUP BY UnitID) AS t2
ON (t1.UnitD = t2.UnitID AND t1.Time = t2.MaxTime)
0 голосов
/ 01 августа 2011

Может быть, это?

SELECT * FROM Info GROUP BY UnitID HAVING Time = MAX(Time);
0 голосов
/ 01 августа 2011

Попробуйте это -

SELECT t1.* FROM table1 t1
JOIN (
  SELECT UnitID, MAX(Time) maxtime FROM table1 GROUP BY UnitID
) t2
ON t1.UnitID = t2.UnitID AND t1.Time = t2.maxtime;

Замените 'table1' на фактическое имя таблицы.

...