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 года назад
Подскажите ещё. Также есть у меня два поля data(date) и time(varchar). Как по ним сделать сортировку в GROUP BY используя ORDER BY data desc, time desc? Какие функции нужно добавить?
Использую 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 мне обязательно нужен. Подскажите пожалуйста.