2008-11-26 20 views
8

Biorąc kilka prostych tabel tak:nazwy kolumn tabeli utworzonej przez związek

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

Gdybym unii je razem w zapytaniu, co mogę nazwać kolumna?

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

Teraz w mysql, mogę najwyraźniej odnosi się do kolumny T jako „foo” - nazwa kolumny pasującym do pierwszego stosunku w Unii. W sqlite3 jednak to nie działa. Czy istnieje sposób na to, że jest to standardowe we wszystkich implementacjach SQL?

Jeśli nie, to co z samym sqlite3?

Korekta: sqlite3 pozwala mimo wszystko odwoływać się do kolumny T jako "foo"! Ups!

Odpowiedz

11

Chociaż nie ma przepisanej litery, możemy użyć nazw kolumn z pierwszego podzapytania w zapytaniu związkowym, aby pobrać wyniki związku.

12

Spróbuj podać alias kolumn;

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

lub jeśli nazwa kolumny nie jest konieczna, wówczas wystarczający będzie T. *.

+0

kodzie wynikach Grupy według 'Col1', dlaczego? – kicaj

5

trzeba tylko aliasy kolumn tylko w pierwszym select (przetestowane w SQL Server 2008 R2)

select T.Col1 
from (
    select 'val1' as Col1 
    union 
    select 'val2' 
    union 
    select 'val3'  
) as T; 
Powiązane problemy