我对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>
答案 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 1
或LIMIT
条款。