Oracle SQL:LEAST() 返回多行...?

Posted

技术标签:

【中文标题】Oracle SQL:LEAST() 返回多行...?【英文标题】:Oracle SQL: LEAST() returns multiple rows...? 【发布时间】:2009-02-24 15:22:54 【问题描述】:

一位同事刚刚向我提出了一个令人费解的 SQL 查询:

(基本上)

SELECT LEAST(id) FROM tableA A, tableB B WHERE a.name = b.name(+)

然而,返回的结果集列出了三个数字:

最少(id) -------------- 621 644 689

(所有都是满足查询的 ID,就好像它缺少 LEAST 函数一样)

为什么? =)

【问题讨论】:

我不懂Oracle,对b.name后面的(+)很好奇。这个语法说明了什么?外连接? (+) 表示应从外连接中的哪个表导入所有行 【参考方案1】:

LEAST(x,y,...) 不是聚合函数。它仅适用于其参数。你想要的函数是 MIN(x)。

对于每条记录,您都在运行 LEAST(id),它将始终返回 id。如果您传递的参数最少,您会看到不同的结果。例如,LEAST(5,6,7) = 5。 LEAST 总是返回其参数中最小的,而 MIN 返回每条记录中最小的

【讨论】:

以上是关于Oracle SQL:LEAST() 返回多行...?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL插入多行并返回一些东西

Oracle Group by NULL 中的 SQL 返回多行

带有空行和多行注释的 Oracle SQL*Plus 错误

ORACLE 内置函数之GREATEST和LEAST

数据库多行拼接到一行Oracle和sqlServer

从 Oracle 函数返回多个值