Простой MYSQL отличный выбор - PullRequest
0 голосов
/ 13 июля 2011

Если у меня есть таблица с двумя столбцами, name и timestamp, и набор строк, которые будут иметь общие имена. Как выбрать самую последнюю строку каждого набора строк с одинаковым именем?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 июля 2011
SELECT name, MAX(timestamp) FROM Table1 GROUP BY name

РЕДАКТИРОВАТЬ: На основе комментария, пожалуйста, попробуйте следующее:

SELECT name, timestamp, col3, col4
FROM   Table1 t1
WHERE  timestamp = (SELECT MAX(t2.timestamp)
              FROM Table1 t2
              WHERE t1.name = t2.name);

Добавлено Mchl

Версия без зависимых подзапросов (должна работать лучше)

SELECT 
  t1.name, t1.timestamp, t1.col3, t1.col4
FROM   
  Table1 AS t1
CROSS JOIN (
  SELECT 
    name, MAX(timestamp) AS timestamp
  FROM 
    Table1
  GROUP BY
     name
) AS sq
USING (name,timestamp)
1 голос
/ 13 июля 2011

Тогда вам нужен подзапрос:

SELECT columns 
FROM Table1 t1
WHERE row_id = (SELECT row_id 
                FROM table1 t2
                WHERE t1.name = t2.name
                ORDER BY timestamp DESC 
                LIMIT 1)
GROUP BY name

Отредактировано, группа забыта по имени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...