Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL:FROM क्लॉज लिमिटेशन में सबक्वेरी के साथ देखें

मुझे भी यही समस्या थी। मैं 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

समाधान की रूपरेखा:

  1. प्रत्येक सबक्वेरी के लिए एक दृश्य बनाएं
  2. उपश्रेणियों को उन दृश्यों से बदलें

यहाँ समाधान क्वेरी है:

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 पर बहुत अधिक गति दंड के बिना ठीक काम करता है (बिना किसी दृश्य के मूल उप-क्वेरी चयन को निष्पादित करने की तुलना में)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP सरणी को MySQL में सहेजें?

  2. MySQL में एकाधिक तालिकाओं से कैसे हटाएं?

  3. MySQL 5.6 . में रूट पासवर्ड रीसेट करना

  4. Ubuntu 14.04 पर MySQL स्थापित करें

  5. nth शब्द कैसे निकालें और MySQL स्ट्रिंग में शब्द घटनाओं की गणना कैसे करें?