@Urukhayy

Что делать в данном случае?

SELECT Admin,Message,Type,Date FROM table
	INNER JOIN users ON users.ID = table.ID WHERE users.Name='Test' ORDER BY Date DESC, GROUP BY Type


На запрос выдаётся ошибка. Но если поменять местами ORDER BY и GROUP BY - ошибки не будет, но результат будем уже другим.

Мне нужно сформировать группы Type, но чтобы более свежий Date каждой группы был вначале. А если поменять их местами, то вначале будет свежий Date среди всех групп.
  • Вопрос задан
  • 2335 просмотров
Решения вопроса 1
Vityarik
@Vityarik
Попробуйте использовать подзапросы

SELECT
    *
FROM (SELECT
          TYPE,  MAX(DATE) AS DATE
      FROM TABLE
          INNER JOIN USERS ON USERS.ID = TABLE.ID
      WHERE
          USERS.NAME = 'Test'
      GROUP BY
          TYPE)
ORDER BY DATE DESC


или еще проще
SELECT
    TYPE,
    MAX(DATE) AS DT
FROM TABLE
    INNER JOIN USERS ON USERS.ID = TABLE.ID
WHERE
    USERS.NAME = 'Test'
GROUP BY
    TYPE
ORDER BY DT DESC
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
rework
@rework
Помог ответ? В благодарность отметь его решением
Зачем у вас запятая после ORDER BY Date DESC ?
Ответ написан
@AlexeyVD
Во-первых, посмотрите синтаксис select. ORDER BY должен идти после GROUP BY и никак иначе.
Во-вторых, не очень понятно какие данные у вас есть и что вы хотите получить из них в итоге своим запросом. В списке выбираемых полей при группировке могут присутствовать либо поля, по которым эта группировка идет, либо другие поля, обернутые в агрегатные функции. В противном случае результат запроса будет абсолютно непредсказуемым.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы