MySQL, как отсортировать наименьшее значение / цена таблицы, и показать только имя самого низкого? - PullRequest
0 голосов
/ 28 июня 2019

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

Что у меня сейчас есть:

| type       | pID        |city           |price    |
|:-----------|------------:|:------------:|----------
| B          |  COD12      |    Canvas    |  240    |
| B          |  COD40      |    Canvas    |  200    |
| B          |  KHOD20     |    Kentucky  |  40     |
| B          |  KHOD60     |    Kentucky  |  40     |

Что я хочу:


| type        | pID        |city          |price    |
|:-----------|------------:|:------------:|----------
| B          |  COD40      |    Canvas    |  200    |
| B          |  KHOD20     |    Kentucky  |  40     |
| B          |  KHOD60     |    Kentucky  |  40     |

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

С точки зрения производительности было бы интересно сравнить ответ mdem7 с коррелированным подзапросом:

select t.*
from t
where t.price = (select min(t2.price) from t t2 where t2.city = t.city);

Это может использовать индекс на (city, price).

В MySQL 8+ это хорошее место для оконных функций:

select t.*
from (select t.*,
             rank() over (partition by city order by price) as seqnum
      from t
     ) t
where seqnum = 1;
0 голосов
/ 28 июня 2019

Этот SQL дает вам описание, которое вы описали

select type,pID,city,price
  from your table 
 where (city, price) 
    in (select city, min(price) 
          from your table 
         group by 1)

Подзапрос определяет минимальные цены для каждого города, передает информацию о городе и цене в основной запрос в качестве фильтра.При использовании этого фильтра основной запрос возвращает совпадения всех строк с парами город / цена.

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