2016-10-06 4 views
0

У меня есть SQL таблицу со следующими столбцамиSql запрос к последней записи из таблицы

CrewID 
Lat 
Lon 
DateCreated 

Теперь эта таблица хранит широту и долготу каждого экипажа, когда они путешествуют вместе с DATETIME, когда позиция записывается.

Мне нужно написать запрос, который даст мне последнюю записанную позицию каждой команды из этой таблицы на основе DateCreated.

+0

Каждый экипаж имеет несколько записей в этой таблице вам нужно последняя запись каждого экипажа не так ли? –

+0

Hullo, как насчет 'max (DateCreated)'? – Laazo

+1

Какая СУБД вы используете? –

ответ

1
Select top 1 * from table_name order by DateCreated desc 

убывание возвращает последнюю дату и возрастанию будет возвращать старую дату, присутствующую в вашей таблице, приведенный выше запрос будет работать SQL_Server, вы можете использовать Limit ключевое слово для MySQL таким же образом, ,

Объяснение

  1. Порядка запись по дате
  2. Выберите верхний 1 из упорядоченных данных (Последний записанные строк данных)
  3. Вы можете написать имена столбцов вместо * для фильтрации данные

Learning Resource: This

+0

Я думаю, что это вернет только одно значение не каждому CrewId. –

+0

да, оно вернет одно значение, поскольку вопрос был «Мне нужно написать запрос, который даст мне последнюю записанную позицию каждой команды из этой таблицы». –

+0

Предположим, у вас есть десять идентификаторов команды, а затем в результате чего ваш запрос вернется? ? –

0
SELECT tn.* 
FROM table_name tn 
LEFT OUTER JOIN table_name tnb 
    ON tn.CrewID = tnb.CrewID AND tn.DateCreated< tnb.DateCreated 
WHERE tnb.CrewID IS NULL; 
0

Заканчивать Это

SELECT CrewID,max(Lat),Max(Lon),Max(DateCreated) 
Group By CrewID 

Пожалуйста, ответьте

Смежные вопросы