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

MYSQL में नेस्टेड सेलेक्ट स्टेटमेंट शामिल हों

बहिष्करण में शामिल होने . के साथ मैं इस प्रकार की क्वेरी को अलग तरीके से करता हूं एक सबक्वेरी के बजाय। आप बी की पंक्तियों को ढूंढना चाहते हैं जिनमें किसी दिए गए आईडी के लिए अधिकतम समय है; दूसरे शब्दों में, जहां किसी अन्य पंक्ति में अधिक समय और समान आईडी नहीं है।

SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
LEFT OUTER JOIN B AS B2 ON B.ID = B2.ID AND B.Time < B2.Time
WHERE B2.ID IS NULL

आप व्युत्पन्न तालिका . का भी उपयोग कर सकते हैं , जो एक सहसंबद्ध सबक्वेरी का उपयोग करने से बेहतर प्रदर्शन करना चाहिए।

SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
JOIN (SELECT ID, MAX(Time) AS Time FROM B GROUP BY ID) AS B2
  ON (B.ID, B.Time) = (B2.ID, B2.Time)

पुनश्च:मैंने greatest-n-per-group जोड़ा है उपनाम। इस प्रकार का SQL प्रश्न हर सप्ताह स्टैक ओवरफ़्लो पर आता है, इसलिए आप उस टैग का अनुसरण करके दर्जनों समान प्रश्न और उनके उत्तर देख सकते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL त्रुटि # 1005 (कोड 150)

  2. डेटाबेस में बैंक जानकारी संग्रहीत करने के लिए सर्वोत्तम अभ्यास

  3. yii2 sqldataProvider के साथ खोज का उपयोग कैसे करें

  4. पिछले 3 महीनों से केवल MySQL में रिटर्निंग रिकॉर्ड

  5. #1055 - चयन सूची की अभिव्यक्ति ग्रुप बाय क्लॉज में नहीं है और इसमें गैर-समेकित कॉलम है यह sql_mode=only_full_group_by के साथ असंगत है