web-dev-qa-db-ja.com

MYSQLがフィールドに最小値を持つデータを選択する方法

特定のフィールドに最小値があるテーブルからデータを選択したいので、これを試しました:

SELECT * FROM pieces where min(price)

私はMySQLが苦手です。助けてください。ありがとう

29
Sami El Hilali

これにより、すべてのレコードで最低価格の結果が得られます。

SELECT *
FROM pieces
WHERE price =  ( SELECT MIN(price) FROM pieces )
53
John Woo

これは私がそれをする方法です(質問を理解していると仮定して)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1

複数の行を選択しようとしている場合、各行で同じ価格(最低)が設定されている場合は、@ JohnWooの答えで十分です。

基本的にここでは、ASCendingの価格で結果を並べ替え(増加)し、結果の最初の行を取得しています。

42
sberry

HAVING MIN(...)を使用します

何かのようなもの:

SELECT MIN(price) AS price, pricegroup
FROM articles_prices
WHERE articleID=10
GROUP BY pricegroup
HAVING MIN(price) > 0;
5
pulsit

実際、何を取得したいかに依存します:-最小値:

SELECT MIN(price) FROM pieces
  • 最小値を持つテーブル(複数の行):John Wooが上記のとおりです。

  • ただし、同じ最小値を持つ異なる行を作成できる場合は、別の列からORDERするのが最適です。これは、後で(John Woo answereから)行う必要があるためです。

    SELECT * FROM個WHERE価格=(SELECT MIN(price)FROM個)ORDER BY在庫ASC

4

これも機能します:

SELECT
  pieces.*
FROM
  pieces inner join (select min(price) as minprice from pieces) mn
  on pieces.price = mn.minprice

(このバージョンにはサブクエリを持つwhere条件がないため、テーブルを更新する必要がある場合に使用できますが、SELECTだけが必要な場合はJohn Wooソリューションを使用することをお勧めします)

3
fthiella

効率的な方法(レコードをいくつでも):

SELECT id, name, MIN(price) FROM (select * from table order by price) as t group by id
1
Vijay Maurya