SELECT * WHERE val = MIN(val)?

时间:2013-04-04 13:58:21

标签: sql oracle select minimum

我对Oracle SQL很新,但是它的逻辑已经开始让我感到困惑。我正在尝试从特定列PRICE具有最小值的表中选择所有列。

这有效:

SELECT MIN(PRICE) FROM my_tab;

这会返回最小值。但为什么我不能选择该行中的所有列?以下内容不起作用:

SELECT * FROM my_tab WHERE PRICE = MIN( PRICE );

我在这里缺少什么?干杯啦!

*的 修改 *

以下是我遇到问题的完整代码:

SELECT * FROM(SELECT c.NAME,o。* FROM customers c JOIN customer_orders o ON c.CUST_NBR = o.CUST_NBR)AS t WHERE t.PRICE =(SELECT MIN(t.PRICE)FROM t); < / p>

3 个答案:

答案 0 :(得分:2)

SELECT * FROM TABLE WHERE PRICE = (SELECT MIN(PRICE) FROM TABLE)

--Edited 

WITH 
TABLE AS 
(QUERY) 
SELECT * FROM TABLE
WHERE PRICE = (SELECT MIN(PRICE) FROM TABLE)

答案 1 :(得分:0)

您还可以使用子查询来获得结果:

select t1.*
from my_tab t1
inner join
(
  SELECT MIN(PRICE) MinPrice
  FROM my_tab
) t2
  on t1.price = t2.minprice

答案 2 :(得分:0)

请参阅之前的SO question,尤其是“Vash”,最适合您的目的。请注意,您可能希望避免使用子选择,因为Oracle可能足够聪明,可以在价格上使用索引(如果可用,只查看一条记录)。

大多数数据库(但显然不是Oracle)对这些问题都有TOP 1LIMIT条款。