问题源于需要从需要返回值以返回将用于Web服务的单行结果集。
例如,如果我有一个当前返回3列1行结果集的select语句,有没有办法在自己的列中“追加”一个值?新值可能是任意选择的结果,只返回一行。
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',而是指我想要“追加”的新select语句的结果。
答案 0 :(得分:2)
如果您想要一个新的select语句,可以通过两种方式实现。一个是select
中的select
:
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
我正在使用一个简单的子查询作为示例。我假设你的子查询有点复杂。
答案 1 :(得分:0)
select
a, b, c,
(select smth from table2 limit 1) as col4 as col4
from d where a = 'id'
第二个查询应该只返回一行和一列
答案 2 :(得分:0)
这种类型的结构将起作用。请注意,当有多行时,您将获得交叉连接。
select a,b,c,d
from ( select a,b,c from dual )
, (select d from dual )