web-dev-qa-db-ja.com

MySQLのテーブルの一部から最小値と最大値を選択する

テーブル全体から最小値と最大値を選択する場合は、これを使用できます。

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

しかし、テーブルの一部から最小値と最大値を選択する方法は?たとえば、テーブルに30行あります。最初の10行から最小値と最大値を選択し、次に2番目の10行から選択して、最後の10行を形成します。

私は何かを試しました

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

しかし、これはうまくいきませんでした。

最小限のクエリでこの問題を解決するにはどうすればよいですか?

8
Taras Bulgakov
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);

範囲の始点を指定するには、オフセット値を変更する必要があります。

14
reggie

やってみました :

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