如何使用MIN()函数获取mysql中最小数字的id

时间:2011-11-24 01:03:28

标签: mysql sql

样本表

id |   name   | price |
-----------------------
1  |   john   | 300   |
----------------------- 
2  | michael  |  400  |
----------------------- 
3  | michelle |  250  |
-----------------------

我将使用此查询获取表中最小的数字

SELECT id, name, MIN(price) FROM table

结果将变为:

_______________________
id |   name   | price |
-----------------------
1  | michelle |  250  |

我希望结果会像这样:

id |   name   | price |
-----------------------
3  | michelle |  250  |
-----------------------

提前致谢!

6 个答案:

答案 0 :(得分:7)

获取最小数字的id的最简单方法是:

SELECT Id, name, price
FROM sampleTable
ORDER BY price ASC 
LIMIT 1;

如果你想使用MIN(作为标题状态),一种方法是:

SELECT id, name, price 
FROM sampleTable 
WHERE price = (SELECT MIN(price) from sampleTable)

答案 1 :(得分:4)

使用子查询:

SELECT id, name, price 
FROM table 
WHERE price = (SELECT min(price) FROM table);

如果没有LIMIT 1,则可以返回多个共享相同最低价格的行。这可能是您想要的,也可能不是,而不是匹配记录中的任意选择。

答案 2 :(得分:3)

对于此查询,您不需要MIN,但可以使用ORDER BYLIMIT

SELECT id, name, price
FROM Table
ORDER BY Price ASC
LIMIT 1

答案 3 :(得分:3)

我是这样做的:

SELECT t1.id, t1.name, t1.price
FROM sampleTable AS t1
LEFT OUTER JOIN sampleTable AS t2
  ON t1.price > t2.price
WHERE t2.id IS NULL

换句话说,寻找价格低于行t1的行t2。如果没有找到这样的行t2,则外连接使得t2。* NULL,当这是真的时,那么t1必须具有最低价格。

这称为排除连接,它通常比MySQL中的子查询执行得更好。

答案 4 :(得分:1)

这样做;

SELECT id, name, price FROM table order by price ASC LIMIT 1

希望有所帮助

答案 5 :(得分:0)

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

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

我尝试了许多解决方案: 使用joinsubquery都很好,但是会花费更多时间。

但是这个太棒了。