【问题标题】:Oracle SQL: LEAST() returns multiple rows...?Oracle SQL:LEAST() 返回多行...?
【发布时间】: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后面的(+)很好奇。这个语法说明了什么?外连接?
  • (+) 表示应从外连接中的哪个表导入所有行

标签: sql oracle user-defined-functions


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多