Если у меня есть таблица со следующей структурой и данными:Получение самую последнюю запись для каждого пользователя
id | user_id | created_at
-------------------------
1 | 7 | 0091942
2 | 3 | 0000014
3 | 6 | 0000890
4 | 6 | 0029249
5 | 7 | 0000049
6 | 3 | 0005440
7 | 9 | 0010108
Что запрос я должен использовать, чтобы получить следующие результаты (объяснение следовать):
id | user_id | created_at
-------------------------
1 | 7 | 0091942
6 | 3 | 0005440
4 | 6 | 0029249
7 | 9 | 0010108
Как вы можете видеть:
- только одна строка на
user_id
возвращается. - Вершина с самым высоким номером
created_at
.
Есть ли способ сделать это без с помощью подзапрограмм? Есть ли имя в языке реляционной алгебры, что эта процедура проходит?
В SQL Server вы можете использовать функцию ранжирования 'row_number()', но, похоже, в MySql нет эквивалента: http://stackoverflow.com/questions/1895110/row-number-in -mysql – Blorgbeard
Пожалуйста, не стесняйтесь публиковать решение на основе подзапроса, если вы хотите, чтобы я мог правильно его пометить. –
, вы должны сменить столбец created_at на datetime, чтобы вы могли получить последнюю дату, о которой я думаю. –