1

问题源于需要返回值,以返回将用于 Web 服务的单行结果集。

例如,如果我有一个 select 语句,它当前返回一个包含 3 列和 1 行的结果集,有没有办法在它自己的列中“附加”一个值?新值可以是任意选择的结果,它只返回一行。

select a, b, c from d where a = 'id'

col1   col2   col3
  a      b      c

新的选择应该给出:

col1   col2   col3   col4
  a      b      c    *NEW*

在这种情况下,任意用于表示不一定与原始 select 语句中的任何值或表相关。

我想知道如何在 Oracle 中做到这一点,但希望有一个使用标准 SQL 功能的解决方案,以便大多数数据库都能处理它。

编辑NEW我不是指字符串文字'NEW',而是指我想要“追加”的新选择语句的结果。

4

3 回答 3

3

如果你想要一个新的 select 语句,你可以通过两种方式做到这一点。一个是 aselectselect

select col1, col2, col3, 
       (select 'NEW' from d limit 1) as col4
from d

另一个是cross join

 select d.col1, d.col2, d.col3, const.col4
 from d cross join
      (select 'NEW' as col4 from d limit 1) const

我使用一个简单的子查询作为示例。我假设您的子查询有点复杂。

于 2013-07-02T18:06:32.757 回答
0

这种类型的结构将起作用。请注意,当有不止一行时,您将获得交叉连接。

select a,b,c,d
from ( select a,b,c from dual )
, (select d from dual )
于 2013-07-02T18:05:29.057 回答
0
select
    a, b, c,
    (select smth from table2 limit 1) as col4 as col4
from d where a = 'id'

第二个查询应该恰好返回一行和一列

于 2013-07-02T18:00:46.190 回答