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.
Честно сказать, удивлён как у вас вообще это отработало, вы используете объединение а затем выводите все поля. Быть может вы хотели сделать так?
select max(id), email, max(created_at) as created_at
from ordered_users
where is_active = 1
group by email
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Допустим есть таблица users в которой 40 записей
есть такие запросыЕсли первый,второй,третий я понял, то что делает четвертый? И можно ли его переписать без использования временной таблицы
Помогите, пожалуйста, подправить запрос, нужно отсортировать комментарии по лайкам и дизлайкам (то бишь по сумме лайков и дизлайков: cnt_total...