PGSQL Hjelp VELG Row Binding

stemmer
0

Jeg ønsker å spørre om PostgreSQL, jeg kunne ikke finne mitt svar fra google. Ok, la oss komme i gang,

antar at jeg har en tabell som heter 'navn' med 20 rader, som har kolonnen 'FIRST_NAME' og 'last_name'.

hva SQL jeg bør bruke for å gjøre spørringen retur bare en kolonne som inneholder alle verdien i 'FIRST_NAME' og 'last_name', slik at det returnerer 40 rader (20 fra 'FIRST_NAME' og en annen 20 fra 'last_name')?

Takk for hjelpen,

Publisert på 01/08/2017 klokken 08:28
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Du kan gjøre dette ved hjelp av UNIONoperatør og aliasing kolonnene til samme navn, som nedenfor:

SELECT 
first_name AS names
FROM name
UNION
SELECT 
last_name AS names
FROM name;

Men UNION operatør vil fjerne duplikat navn, for å inkludere alt, inkludert like navn bruke UNION ALLoperatøren som følger:

SELECT 
first_name AS names
FROM name
UNION ALL
SELECT 
last_name AS names
FROM name;
Svarte 01/08/2017 kl. 08:30
kilden bruker

stemmer
0

En annen måte å transponere kolonner til rader:

SELECT UNNEST(ARRAY[first_name, last_name]) AS name
FROM name;

Denne tilnærmingen vil gjøre en eneste sekvensiell skanning på bordet, mens UNION ALLtilnærmingen vil gjøre to skanninger. Hvilken tilnærming utfører bedre vil trolig avhenge av dine data.

Svarte 01/08/2017 kl. 11:16
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more