Запрос с несколькими ORDER BY

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Есть такой запрос:
Код:
SELECT * FROM `accounts` GROUP BY `email` ORDER BY `id` DESC

Им мы получаем все уникальные email. Но у одинаковых email может быть разный group. Надо, чтобы еще была сортировка по полю group.

Поле group может быть от -1 до 4. Если у email есть запись с группой 4, то надо получить именно эту строку. Если с таким полем email есть записи с группами -1, 2, 3, то надо получить запись с группой 3. То есть надо наибольшую группу получить в результате
 
На вскидку, так:
Код:
SELECT a1.* FROM accounts a1,
  (SELECT email, MAX(e_group) e_group FROM accounts GROUP BY email) a2
WHERE a1.email=a2.email AND a1.e_group=a2.e_group
ORDER BY id DESC
Код:
SELECT `accounts`.*
FROM `accounts`,
    (
        SELECT `email`, MAX(`group`) `max_group`
        FROM `accounts` GROUP BY `email`
    ) `table2`
WHERE
    `accounts`.`email`=`table2`.`email` AND
    `accounts`.`group`=`table2`.`max_group`
ORDER BY `id` DESC

Чего-то по email не сгруппировал запрос
 
На вскидку, так:
Код:
SELECT a1.* FROM accounts a1,
  (SELECT email, MAX(e_group) e_group FROM accounts GROUP BY email) a2
WHERE a1.email=a2.email AND a1.e_group=a2.e_group
ORDER BY id DESC
<-------------- добавлено через 2544 сек. -------------->
Что ты имеешь в виду? На выходе должен получиться список по одной строке для каждого email, соответствующей макс значению group.
 
Назад
Сверху