MYSQL如何选择字段具有最小值的数据

时间:2012-11-13 07:50:40

标签: mysql sql aggregate-functions greatest-n-per-group

我想从表中选择数据,其中特定字段具有最小值,我试过这个:

SELECT * FROM pieces where min(price)

我对MySQL不好,请帮忙吗?感谢

7 个答案:

答案 0 :(得分:53)

这将为您提供所有记录的最低价格结果。

SELECT *
FROM pieces
WHERE price =  ( SELECT MIN(price) FROM pieces )

答案 1 :(得分:42)

我就是这样做的(假设我理解了这个问题)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1

如果您尝试选择多行,其中每行可能具有相同的价格(这是最低价格),那么@ JohnWoo的回答就足够了。

基本上我们只是按照ASCending顺序(增加)的价格订购结果并取结果的第一行。

答案 2 :(得分:5)

使用 HAVING MIN(...)

类似的东西:

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

答案 3 :(得分:3)

这也有效:

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

(因为这个版本没有带子查询的where条件,如果你需要更新表,可以使用它,但是如果你只需要SELECT我会推荐使用John Woo解决方案)

答案 4 :(得分:3)

事实上,取决于你想得到什么: - 只是最小值:

SELECT MIN(price) FROM pieces
  • 最小值的表格(倍数):正如John Woo所说。

  • 但是,如果可以是具有相同最小值的不同行,则最好是从另一列中对它们进行ORDER,因为之后或之后您将需要这样做(从John Woo answere开始):

    SELECT * FROM件 价格=(SELECT MIN(价格)FROM件) 按库存订购ASC

答案 5 :(得分:1)

有效方式(具有任意数量的记录):

sed '/^line2/!b;s/^/.../;s/$/.../' file

答案 6 :(得分:-6)

使其更简单

  

SELECT *,MIN(price)FROM prod LIMIT 1

  • 放*以便显示最小值的所有记录