sql >> Databasteknik >  >> RDS >> PostgreSQL

Lägg till tabellnamn för varje kolumn i en resultatuppsättning i SQL? (Postgres specifikt)

Jag vet att den här frågan är lite gammal, men kanske kommer någon att snubbla över svaret och det hjälper dem.

Det rätta sättet att göra det du letar efter är att skapa och använda en vy. Ja, det kommer att vara lite tråkigt en gång att skriva ut alla dessa nya kolumnnamn som alias, men om det finns många kolumner här är ett trick som du kan använda för att utnyttja PostgreSQL-metadata för att skriva ut texten i vyn:

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;';

att köra detta ger:

?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 sedan kopiera och köra resultaten och 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ök GROUP_CONCAT med LIKE

  2. Hur man stoppar mysqld

  3. Postgres-begränsning som säkerställer att en kolumn av många finns?

  4. Ansluter till Docker-behållare från värd