Моя таблица выглядит примерно так:
ID | Тип
01 |
02 | с
03 | б
04 |
05 | б
06 |
Я хочу вывести идентификатор последних добавленных записей, сгруппированных по типу. ID - это поле с автоматическим приращением, поэтому последняя добавленная запись, очевидно, является самым большим числом.
SELECT * FROM `table` GROUP BY `Type` ORDER BY `ID` DESC, `Type` ASC
Это группирует строки по типу, затем сортирует по ID, поэтому я получаю идентификаторы 1,2,3, тогда как я хочу отсортировать первую группу THEN, чтобы получить результат: 6,5,2
Это может быть то, что вы ищете...
SELECT MAX(`ID`), `Type` FROM `table` GROUP BY `Type` ORDER BY `Type` ASC
читать как выбрать максимальное значение ID для каждой группы Тип.
Type
), иначе он не выберет правильный, особенно если у вас есть несколько других столбцов
Если ваша версия MySQL позволяет использовать подзапросы (и 5.x), это должно работать:
SELECT *
FROM (SELECT * FROM `table` ORDER BY `id` DESC) AS tmp
GROUP BY `type`
ORDER BY `type` ASC;
Здесь классический способ без подзапросов:
SELECT t1.* FROM table t1
LEFT JOIN table t2
ON (t2.type = t1.type AND t2.id > t1.id)
WHERE t2.id IS NULL
читать как "выбрать строки в таблице, чтобы никакая другая строка с одним и тем же типом имела более высокий идентификатор".