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.