当我在Oracle 11g中运行以下查询时
SELECT least(val)
FROM
(
SELECT 1 AS val
FROM dual
UNION
SELECT 2 AS val
FROM dual
UNION
SELECT 3 AS val
FROM dual
);
我期待一行,但它返回多行。请帮我解释一下我的理解是错误的。
答案 0 :(得分:2)
Oracle的LEAST
函数在表达式列表中返回最小值,例如LEAST(1, 2, 3)
将返回1
。因此LEAST
可用于查找列集合中的最小值,例如: LEAST(col1, col2, col3)
。您所看到的是预期的,即您将获得三条记录,每条记录的值最小。
相反,如果您希望最小值超过行的总和,那么您应该使用MIN
,例如
select min(val)
from
(
select 1 as val from dual union all
select 2 from dual union all
select 3 from dual
);