我想从表中选择数据,其中特定字段具有最小值,我试过这个:
SELECT * FROM pieces where min(price)
我对MySQL不好,请帮忙吗?谢谢
这将为您提供所有记录的最低价格结果。
SELECT *
FROM pieces
WHERE price = ( SELECT MIN(price) FROM pieces )
我就是这样做的(假设我理解这个问题)
SELECT * FROM pieces ORDER BY price ASC LIMIT 1
如果您尝试选择多行,其中每行可能具有相同的价格(这是最小值),那么@ JohnWoo的答案应该足够了。
基本上我们只是按ASCending顺序(增加)的价格排序结果并取结果的第一行。
使用HAVING MIN(...)
就像是:
SELECT MIN(price) AS price, pricegroup
FROM articles_prices
WHERE articleID=10
GROUP BY pricegroup
HAVING MIN(price) > 0;
这也有效:
SELECT
pieces.*
FROM
pieces inner join (select min(price) as minprice from pieces) mn
on pieces.price = mn.minprice
(因为这个版本没有子查询的where条件,如果你需要更新表,可以使用它,但如果你只需要SELECT我会建议使用John Woo解决方案)
事实上,取决于你想要得到的: - 只是最小值:
SELECT MIN(price) FROM pieces
高效的方式(有任意数量的记录):
SELECT id, name, MIN(price) FROM (select * from table order by price) as t group by id
使它更简单
SELECT *,MIN(价格)FROM prod LIMIT 1