Saya memiliki masalah yang sama. Saya ingin membuat tampilan untuk menampilkan informasi tahun terakhir, dari tabel dengan catatan dari 2009 hingga 2011. Berikut kueri aslinya:
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
Garis besar solusi:
- buat tampilan untuk setiap subkueri
- ganti subkueri dengan tampilan tersebut
Berikut pertanyaan solusi:
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;
Ini bekerja dengan baik di mysql 5.0.45, tanpa banyak penalti kecepatan (dibandingkan dengan mengeksekusi sub-kueri asli yang dipilih tanpa tampilan apa pun).