Здесь я создал некоторые таблицы для проверки с:SQL: Возьмите только последнюю запись для каждой «группы»?
CREATE TABLE IF NOT EXISTS `test` (
`index` varchar(255) NOT NULL,
`index2` varchar(255) NOT NULL,
`date` date NOT NULL,
`somenumber` int(10) NOT NULL,
PRIMARY KEY (`index`,`index2`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test` (`index`, `index2`, `date`, `somenumber`) VALUES
('kevin', 'little', '2013-06-11', 1),
('kevin', 'little', '2013-07-03', 5),
('maria', 'smith', '2013-07-01', 3),
('martin', 'luther', '2013-07-04', 13),
('martin', 'luther', '2013-07-05', 14);
Теперь я хочу, чтобы получить последнююsomenumber
для всех, заказанный somenumber DESC
. Вот моя попытка:
SELECT * FROM `test` GROUP BY `index`, `index2` ORDER BY `somenumber` DESC
Проблема заключается в том, что этот запрос действительно всегда принимает один somenumber для каждой группы, но это не всегда последняя.
(я знаю, что indexnames не делать слишком много смысла, но я думал, что это будет пример проще для чтения, чем при использовании случайных чисел-индексов)
если и хотят, последняя запись, вставляемой, shudnt у просто оставить его как 'ORDER BY somenumber;' – kevinm
Вы имеете в виду последнее по дате? – Headshota
Да, мне нужен последний номер для всех, где «последний» определяется строкой 'date'. – user2015253