使用LEAST查询在oracle中返回多行

时间:2017-10-09 04:03:55

标签: sql oracle oracle11g

当我在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
);

我期待一行,但它返回多行。请帮我解释一下我的理解是错误的。

1 个答案:

答案 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
);