Jag hade samma problem. Jag ville skapa en vy för att visa information om det senaste året, från en tabell med poster från 2009 till 2011. Här är den ursprungliga frågan:
SELECT a.*
FROM a
JOIN (
SELECT a.alias, MAX(a.year) as max_year
FROM a
GROUP BY a.alias
) b
ON a.alias=b.alias and a.year=b.max_year
Översikt över lösning:
- skapa en vy för varje underfråga
- ersätt delfrågor med dessa vyer
Här är lösningsfrågan:
CREATE VIEW v_max_year AS
SELECT alias, MAX(year) as max_year
FROM a
GROUP BY a.alias;
CREATE VIEW v_latest_info AS
SELECT a.*
FROM a
JOIN v_max_year b
ON a.alias=b.alias and a.year=b.max_year;
Det fungerar bra på mysql 5.0.45, utan mycket av en hastighetsstraff (jämfört med att utföra den ursprungliga underfrågan utan några visningar).