/ / Co oznacza ta ONZ? - sql-server, tsql

Co oznacza ta UN? - sql-server, tsql

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 № 1

To 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