Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как вывести id auto_increment при группировке в mysql group by или DISTINCT?

Nikolya Ученик (206), на голосовании 4 года назад
Как вывести id auto_increment при группировке в mysql group by или DISTINCT?
Использую mysql8 только перешел, знаю что можно в настройках mysql применить sql_mode = '' и все будет работать, но мне надо чтобы этот режим был включен и все работало.

НАПРИМЕР: есть таблица table c id(int auto_increment), email(varchar), id_post(int)
id email id_post
1 test1@m.ru 0
2 test2@m.ru 1567
3 test1@m.ru 0
4 test3@m.ru 3
5 test3@m.ru 3
6 test1@m.ru 0

При запросе до версии mysql5.6 данный запрос работал:

SELECT * FROM (SELECT * FROM table WHERE email = 'test1@m.ru') table GROUP BY email, id_post

Ответ:
id email id_post
1 test1@m.ru 0

В версии mysql5.7-8 данный запрос перестал работать и выдает ошибку:
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

Если его переделать на:
SELECT email, id_post FROM (SELECT * FROM table WHERE email = 'test1@m.ru') table GROUP BY email, id_post
Ответ:
email id_post
test1@m.ru 0

Тогда он выводит без ID а id мне обязательно нужен. Подскажите пожалуйста.
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445813) 4 года назад
Если я правильно понял полет мысли, то так:

SELECT min(id), email, id_post FROM table WHERE email = 'test1@m.ru' GROUP BY email, id_post
NikolyaУченик (206) 4 года назад
Да все правильно поняли спасибо
NikolyaУченик (206) 4 года назад
Подскажите ещё. Также есть у меня два поля data(date) и time(varchar). Как по ним сделать сортировку в GROUP BY используя ORDER BY data desc, time desc? Какие функции нужно добавить?
Похожие вопросы