12

このような単純なテーブルがいくつかあるとすると、次のようになります。

create table R(foo text);
create table S(bar text);

クエリでそれらを結合する場合、列を何と呼びますか?

select T.????
from (
    select foo
    from R
    union
    select bar
    from S) as T;

さて、mysqlでは、Tの列を「foo」と呼んでいるようです。これは、ユニオンの最初のリレーションに一致する列の名前です。ただし、sqlite3ではそれは機能しないようです。すべてのSQL実装で標準的な方法はありますか?

そうでない場合は、sqlite3だけでどうですか?

訂正:sqlite3では、Tの列を「foo」として参照できます。おっと!

4

3 に答える 3

15

列にエイリアスを指定してみてください。

select T.Col1
from (
    select foo as Col1
    from R
    union
    select bar as Col1
    from S) as T;

または列の名前が不要な場合は、T。*で十分です。

于 2008-11-26T08:00:33.483 に答える
13

スペル規則はありませんが、ユニオンクエリの最初のサブクエリの列名を使用してユニオンの結果を取得できます。

于 2008-11-26T08:06:02.147 に答える
8

最初の選択でのみ列エイリアスが必要です(SQl Server 2008 R2でテスト済み)

select T.Col1
from (
    select 'val1' as Col1
    union
    select 'val2'
    union
    select 'val3'     
) as T;
于 2012-08-31T10:46:38.747 に答える