Попытка ограничить количество будет показано в результате MySQL - PullRequest
0 голосов
/ 14 мая 2018

У меня есть таблица, в которой хранится идентификатор, предмет, тип еды, изображение и цена.

Я хочу ограничить результат одним типом, продаваемым в магазине, например, кормом для собак, кормом для кошек, DVD по убыванию.order Пример того, что содержится в таблице базы данных mysql: Nunca

id      item                    type        image   price
=========================================================
1       Pedigree Pouches        dog food    img1    $4.99
2       Cesar Classic Selection dog food    img2    $3.99
3       Meaty Strips Chicken    dog food    img3    $2.99
4       Jelly Fish Selection    cat food    img4    $1.99
5       Bananas                 fruit       img5    $2.84
6       Celery                  vegetables  img6    $5.99
7       Apple                   fruit       img7    $0.95
8       Pineapple Juice         Soft drink  img8    $0.99
9       Oranges                 fruit       img9    $1.99
10      Cabbage                 vegetables  img10   $0.99
11      Suicide Squad           dvd         img11   $12.99

Окончательный результат должен выглядеть следующим образом из запроса

id      item                    type        image   price
==========================================================
11      Suicide Squad           dvd         img11   $12.99
10      Cabbage                 vegetables  img10   $0.99
9       Oranges                 fruit       img9    $1.99
8       Pineapple Juice         Soft drink  img8    $0.99
4       Jelly Fish Selection    cat food    img4    $1.99
3       Meaty Strips Chicken    dog food    img3    $2.99

Я пробовал различные запросы MySQL, но нетвыгода

Ответы [ 2 ]

0 голосов
/ 14 мая 2018
select * from t where 
id in(select max(t.id) id from t group by t.type) 
order by id desc

Я думаю, что могут быть альтернативы окна или объединения, но этот, казалось, подходит для этой цели.

0 голосов
/ 14 мая 2018

Типичный метод использует коррелированный подзапрос:

select n.*
from nunca n
where n.id = (select max(n2.id) from nunca n2 where n2.type = n.type);

Это выберет последний ряд каждого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...