Выберите уникальную строку, сгруппированную по столбцу с MySQL

0

Моя таблица выглядит примерно так:

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

  • 0
    Какую версию MySQL вы используете? Важно знать, будет ли подвыбрать вариант
  • 0
    Версия MySQL: сообщество 5.0.81
Теги:

3 ответа

1
Лучший ответ

Это может быть то, что вы ищете...

SELECT   MAX(`ID`), `Type`
FROM     `table`
GROUP BY `Type`
ORDER BY `Type` ASC

читать как выбрать максимальное значение ID для каждой группы Тип.

  • 0
    Работает отлично. Хотя другие являются решениями, это самый простой вариант, который я выбрал.
  • 0
    также заметил, что вам нужно иметь MAX ( Type ), иначе он не выберет правильный, особенно если у вас есть несколько других столбцов
1

Если ваша версия MySQL позволяет использовать подзапросы (и 5.x), это должно работать:

SELECT * 
    FROM (SELECT * FROM `table` ORDER BY `id` DESC) AS tmp 
    GROUP BY `type` 
    ORDER BY `type` ASC;
0

Здесь классический способ без подзапросов:

SELECT t1.* FROM table t1
LEFT JOIN table t2
  ON (t2.type = t1.type AND t2.id > t1.id)
WHERE t2.id IS NULL

читать как "выбрать строки в таблице, чтобы никакая другая строка с одним и тем же типом имела более высокий идентификатор".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню