Det mest eleganta sättet skulle vara att använda USING
klausul i ett uttryckligt anslutningsvillkor:
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;
På så sätt visas kolumnen houseid
finns bara en gång i resultatet , även om du använder SELECT *
.
För att få den genomsnittliga epatmpg
för de markerade raderna:
SELECT avg(v.epatmpg) AS avg_epatmpg
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
Om det finns flera matchningar i dayv2pub
, kan den härledda tabellen innehålla flera instanser av varje rad i vehv2pub
efter sammanfogningen. avg()
baseras på den härledda tabellen.