SQL如何将列附加到单行结果集?

时间:2013-07-02 18:00:07

标签: mysql sql sql-server oracle

问题源于需要从需要返回值以返回将用于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语句的结果。

3 个答案:

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