1

この問題は、Web サービスに使用される単一行の結果セットを返す必要があるため、値を返す必要があるために発生します。

たとえば、現在 3 列と 1 行の結果セットを返す select ステートメントがある場合、独自の列に値を「追加」する方法はありますか? 新しい値は、正確に 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 ステートメントが必要な場合は、2 つの方法でそれを行うことができます。1 つはselect内のselect:

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

もう1つは次の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'

2 番目のクエリは、正確に 1 つの行と 1 つの列を返す必要があります

于 2013-07-02T18:00:46.190 に答える