2012-11-13 54 views
20

请我想从表中选择,在某一特定领域具有最小值数据的数据,我已经试过这样:MYSQL如何选择其中字段具有最小值

SELECT * FROM pieces where min(price) 

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

+4

这个问题可以有多种解释,你可以给例如记录与结果的所有记录? –

回答

41

这会给你所有记录上的最低价格的结果。

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

不客气:D –

+3

这可能会很慢。 – abenevaut

28

这是我会怎么做(假设我理解这个问题)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1 

如果你想选择多行,每个人可能有相同的价格(这是最低限度),那么@ JohnWoo的答案应该足够了。

基本上这里我们只是按照ASCending顺序(增加)中的价格对结果进行排序并取出结果的第一行。

2

这也适用于:

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

(因为这个版本不具备其中一个子查询条件,它可以被使用,如果你需要更新表,但如果你只需要选择我将reccommend使用吴宇森溶液)

+0

它看起来像它可以在视图中重用 –

3

使用HAVING MIN(...)

喜欢的东西:

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

事实上,取决于你想要得到什么: - 就在最小值:

SELECT MIN(price) FROM pieces 
  • 一个表(倍数行)蒙山的最小值:是因为吴宇森上面说的。

  • 但是,如果可以与相同最小值不同行,最好是从另一列命令他们,因为毕竟以后你需要做的(由吴宇森的answere开始):

    SELECT * FROM件WHERE 价格=(SELECT MIN(价格)FROM件) ORDER BY股票ASC

-4

,使其更简单

SELECT *, MIN(价格)FROM督促LIMIT 1

  • 把*所以它会显示最小值
+4

它实际上不会。 *将显示随机值,不一定来自与该分钟关联的行。 –

+2

完全同意Laurentiu L.在这里:大多数其他DBMS(然后是MySQL)不会允许您在没有正确的GROUP BY子句的情况下运行这样的查询。 –

+0

这将选择一个随机行来最小化值,而不是它所要求的! –

相关问题