Выберите минимальное и максимальное значение из части таблицы в MySQL

Если я хочу выбрать минимальные и максимальные значения из всей таблицы, я могу использовать это:

SELECT min(price) as min_price, max(price) as max_price FROM `prices`

но как выбрать минимальные и максимальные значения только из части таблицы? Например, у меня 30 строк в таблице. Я хочу выбрать min и max значения из первых десяти строк, затем из вторых десяти строк, а затем сформировать последние 10.

Я пробовал что-то вроде

SELECT min(price) as min_price, max(price) as max_price FROM `prices` LIMIT 0,10

но это не сработало.

Как я могу решить эту проблему с минимальными запросы?

2 ответов


SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice FROM (SELECT PRICE FROM PRICES LIMIT 10) tmp;

кроме того, MySQL имеет классную функцию, которая позволит вам возвращать произвольный диапазон строк (например, возвращать строки 10-20). Это очень удобно для отображения страниц записей:

SELECT column FROM table
LIMIT 10 OFFSET 20

приведенный выше запрос вернет строки 20-30.

короче говоря, чтобы вернуть строки от 20 до 30 в случае вашего запроса, вы используете:

SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice 
FROM (SELECT PRICE FROM PRICES LIMIT 10 OFFSET 20);

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


вы пробовали :

SELECT min(price) as min_price, max(price) as max_price FROM 
    (SELECT price FROM `prices` LIMIT 0,10);