Chciałem wstawić plik z połączeniem i ktoś zasugerował to:
SELECT x INTO ##temp
FROM (SELECT x FROM y UNION ALL SELECT x FROM z) UN
Działa, ale co to jest UN
? Niestety, Googling dla "t-sql un" nie jest bardzo pomocne: s
Uwaga: Dowiedziałem się, że możesz po prostu zrobić SELECT x INTO ##temp FROM y UNION ALL SELECT x FROM b
ale nadal jestem ciekawy UN
.
EDIT: Ok, więc to jest alias, ale dlaczego jest to wymagane, aby to działało? Jeśli go usunę, to nie zostanie wykonane.
Odpowiedzi:
10 dla odpowiedzi № 1To nie jest słowo kluczowe. To alias. Można użyć dowolnego ciągu znaków zamiast "UN".
W pełniejszej formie jest to:
SELECT x INTO ##temp
FROM (SELECT x FROM y UNION ALL SELECT x FROM z) AS UN
@Tomalak jest poprawny. W takim przypadku wymagany jest alias. Bez aliasu błąd jest następujący:
Msg 102, Level 15, State 1, Line 2 Niepoprawna składnia w pobliżu ")".
Uprościłem nieco zapytanie i skorzystałem z bazy danych AdventureWorks:
SELECT * INTO ##temp
FROM (SELECT * FROM Person.Address)
to otrzymuje powyższy błąd. W przeciwieństwie:
SELECT * INTO ##temp
FROM Person.Address
działa dobrze. Alternatywą jest
;WITH UN AS
(
SELECT * FROM Person.Address
)
SELECT * INTO ##temp
FROM UN
4 dla odpowiedzi nr 2
Jest to wymagane, ponieważ jest to wyprowadzona tabela, a wyprowadzone tabele muszą mieć nazwę. Wygrałem w tę pracę? Nie widzę, że potrzebujesz tabeli wyprowadzonej.
SELECT x
INTO #Temp
FROM y
UNION ALL
SELECT x
FROM z
Zmieniłem na zwykłą tabelę tymczasową, ponieważ globalne są zwykle złym pomysłem, ponieważ inne połączenia mogą na nie wpływać. Jeśli naprawdę potrzebujesz jednego, użyj go, w przeciwnym razie bądź ostrożny przy korzystaniu z tabel tymczasowych.
3 dla odpowiedzi nr 3
To jest alias
w tym kontekście. Nie ma un
Polecenie T-SQL. Następnie możesz odwoływać się do swoich pól.
SELECT un.x INTO ##temp
FROM (SELECT x FROM y UNION ALL SELECT x FROM z) UN
1 dla odpowiedzi nr 4
W tym przypadku, UN
jest aliasem dla zestawu wyników podzapytania ( (SELECT x FROM y UNION ALL SELECT x FROM z)
). Możesz wymienić UN
z tym, co ci się podoba, o ile nie zmyli parsera.
1 dla odpowiedzi nr 5
Wszystko, co robi, to alias (SELECT x FROM y UNION ALL SELECT x FROM z) na "UN"
0 dla odpowiedzi № 6
Nazwa aliasu / korelacji daje zestaw wyników anazwa tymczasowa, aby można było się do niej odwołać w innym miejscu zapytania. Ten przykład pokazuje, że alias jest wymagany, aby móc odwoływać się do pól w zapytaniach podrzędnych w klauzulach wyboru i dołączenia. Jeśli pod-zapytania nie miały aliasów, serwer nie wiedziałby, z której tabeli pochodzi pole "y". Aliasy są wymagane, aby rozróżnić dwie różne role pod-zapytań.
select A.*, B.y
from
(select id, f, k, y from Table1) A
join
(select id, t, y, s from Table2) B
on A.id = B.id