Как правильно группировать и заказать - PullRequest
0 голосов
/ 17 ноября 2009

У меня проблема с упорядочением результатов при использовании группы по. Похоже, что отображается первая запись в базе данных вместо самой последней в группе.

Пример:

id (автоинкремент) | Имя
1 | анна
2 | Джеймс
3 | анна
4 | Бреда

Как видите, я неоднократно вводил "anne", поэтому я использую группу by. Затем я хотел бы, чтобы отображалась самая последняя «anne», то есть запись «3». Вместо этого отображается первая «anne» (1)

Мой запрос

"Выбрать * ИЗ ТАБЛИЦА ГРУППА ПО НАИМЕНОВАНИЮ ПОРЯДОК ПО ИДЕК DESC

Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

4 голосов
/ 17 ноября 2009

Проблема в том, что вы выбираете все поля (использование * редко является хорошей идеей), поэтому каждая строка уникальна, поэтому нет ничего для группировки.

Попытка:

SELECT 
  Name,
  MAX(ID)
FROM
  TABLE
GROUP BY
  Name
2 голосов
/ 17 ноября 2009

Возможное решение:

SELECT id, name
FROM TABLE
WHERE id IN (SELECT MAX(id) FROM TABLE GROUP BY name)
0 голосов
/ 18 ноября 2009

Опираясь на уже предоставленный другой ответ, этот SQL избавит от необходимости использовать GROUP BY Name:

SELECT 
  DISTINCT Name,
  MAX(ID)
FROM
  TABLE
0 голосов
/ 17 ноября 2009

Попробуйте

SELECT DISTINCT name
FROM table
ORDER BY id DESC
0 голосов
/ 17 ноября 2009

Попробуйте это; это будет работать:

SELECT * FROM TABLE
  INNER JOIN (SELECT MAX(id) AS id
                FROM TABLE
                group by name)
    ids ON TABLE.id = ids.id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...