样本表
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 |
-----------------------
提前致谢!
答案 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 BY
和LIMIT
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
我尝试了许多解决方案:
使用join
,subquery
都很好,但是会花费更多时间。
但是这个太棒了。