sql >> Database teknologi >  >> RDS >> PostgreSQL

Tilføj tabelnavn til hver kolonne i et resultatsæt i SQL? (Postgres specifikt)

Jeg ved, at dette spørgsmål er lidt gammelt, men måske vil nogen snuble over svaret, og det vil hjælpe dem.

Den rigtige måde at gøre det, du leder efter, er at oprette og bruge en visning. Ja, det vil være lidt kedeligt én gang at skrive alle de nye kolonnenavne ud som aliaser, men hvis der er mange kolonner, er her et trick, du kan bruge til at udnytte PostgreSQL-metadataene til at skrive teksten i visningen ud:

select 'CREATE OR REPLACE VIEW people AS SELECT ' || 
(select string_agg(column_name || ' AS person_' || column_name, ', ')
from information_schema.columns
where table_name = 'person'
group by table_name) || 
' FROM person;';
 

at køre dette giver:

?column? ------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE VIEW people AS SELECT last_name AS person_last_name, first_name AS person_first_name FROM person; 1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms] [Executed: 4/21/12 2:05:21 PM EDT ] [Execution: 9/ms]

du kan derefter kopiere og udføre resultaterne og voila:

select * from people;

 person_last_name     person_first_name    
 -------------------  -------------------- 
 Melvoin              Wendy                
 Coleman              Lisa                 

 2 record(s) selected [Fetch MetaData: 1/ms] [Fetch Data: 0/ms] 
 


  1. Sådan optimeres PostgreSQL logisk replikering

  2. Bruger du Docker til at starte webapp, kan du ikke oprette forbindelse til Postgresql DB?

  3. jquery php indsæt data i mysql uden at opdatere siden

  4. Hvordan kan du gruppere efter i intervaller i SQL?