मुझे भी यही समस्या थी। मैं 2009 से 2011 के रिकॉर्ड वाली तालिका से सबसे हाल के वर्ष की जानकारी दिखाने के लिए एक दृश्य बनाना चाहता था। यहाँ मूल क्वेरी है:
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
समाधान की रूपरेखा:
- प्रत्येक सबक्वेरी के लिए एक दृश्य बनाएं
- उपश्रेणियों को उन दृश्यों से बदलें
यहाँ समाधान क्वेरी है:
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;
यह mysql 5.0.45 पर बहुत अधिक गति दंड के बिना ठीक काम करता है (बिना किसी दृश्य के मूल उप-क्वेरी चयन को निष्पादित करने की तुलना में)।