0

我对 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);

4

3 回答 3

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)
于 2013-04-04T13:59:53.173 回答
0

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

select t1.*
from my_tab t1
inner join
(
  SELECT MIN(PRICE) MinPrice
  FROM my_tab
) t2
  on t1.price = t2.minprice
于 2013-04-04T14:00:12.273 回答
0

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

大多数数据库,但显然不是 Oracle,对此类问题都有TOP 1orLIMIT子句。

于 2013-04-04T15:30:28.543 回答