Group by не работает со вьюхой

195
01 мая 2018, 02:04
create table users
(
  id int,
  email varchar(100),
  is_active tinyint(1),
  created_at int
);
insert into users values (1, 'user@mail.ru', 1, unix_timestamp());
insert into users values (2, 'user@mail.ru', 1, unix_timestamp() + 1234);
insert into users values (3, 'user@mail.ru', 0, unix_timestamp() + 123456);
create view ordered_users as
select * from users order by is_active desc, created_at desc;
select id, email, created_at as created_at 
from ordered_users
group by email

Выводит запись с id = 1, а должно с id = 2. Причем обычным запросом:

select id, email, created_at as created_at 
from (select * from users order by is_active desc, created_at desc) as u
group by email

Выводит верно id = 2. Но мне надо именно вьюхой!!! Подскажите в чем проблема? Почему группировка при выборе из вьюхи не работает? Тот же пример на sqlfiddle.

Answer 1

Честно сказать, удивлён как у вас вообще это отработало, вы используете объединение а затем выводите все поля. Быть может вы хотели сделать так?

select max(id), email, max(created_at)  as created_at 
from ordered_users
where is_active = 1
group by email
READ ALSO
MySQL: Offset и Limit как правильно составить запрос

MySQL: Offset и Limit как правильно составить запрос

Допустим есть таблица users в которой 40 записей

227
Что делает этот запрос MySQL

Что делает этот запрос MySQL

есть такие запросыЕсли первый,второй,третий я понял, то что делает четвертый? И можно ли его переписать без использования временной таблицы

192
Сортировка комментариев по лайкам

Сортировка комментариев по лайкам

Помогите, пожалуйста, подправить запрос, нужно отсортировать комментарии по лайкам и дизлайкам (то бишь по сумме лайков и дизлайков: cnt_total...

181