PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Supprimer la colonne en double après la requête SQL

La manière la plus élégante serait d'utiliser le USING clause dans une condition de jointure explicite :

SELECT houseid, v.vehid, v.epatmpg, d.houseid, d.trpmiles
FROM   vehv2pub v
JOIN   dayv2pub d USING (houseid)
WHERE  v.vehid >= 1
AND    d.trpmiles < 15;

Ainsi, la colonne houseid n'est dans le résultat qu'une fois , même si vous utilisez SELECT * .

Par documentation :

Pour obtenir le epatmpg moyen pour les lignes sélectionnées :

SELECT avg(v.epatmpg) AS avg_epatmpg
FROM   vehv2pub v
JOIN   dayv2pub d USING (houseid)
WHERE  v.vehid >= 1
AND    d.trpmiles < 15;

S'il y a plusieurs correspondances dans dayv2pub , la table dérivée peut contenir plusieurs instances de chaque ligne dans vehv2pub après la jointure. avg() est basé sur la table dérivée.