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

MySQL में प्रत्येक रिकॉर्ड_आईडी के लिए प्रत्येक कॉलम का अंतिम गैर-शून्य रिकॉर्ड पुनर्प्राप्त करें

यह आपकी समस्या का समाधान कर सकता है:

select 
  record_id,
  substring_index(group_concat(Data1 order by Time desc), ',', 1) Data1,
  substring_index(group_concat(Data2 order by Time desc), ',', 1) Data2,
  substring_index(group_concat(Time  order by Time desc), ',', 1) Time
from records
group by record_id
;

यह अन्य उत्तरों की तरह तेज़ नहीं हो सकता है, लेकिन एक और संस्करण है ... इसे आज़माएं। अगर आपके पास Data3 है अपनी तालिका में कॉलम, आप कॉपी/पेस्ट कर सकते हैं Data1 कॉलम और बस इस कॉलम के सभी संदर्भों को नए में बदलें।

बस यह समझाने के लिए कि यह कैसे काम करता है:group_concat फ़ंक्शन एक विभाजक के साथ कॉलम के सभी गैर-शून्य मानों को जोड़ता है (, डिफ़ॉल्ट रूप से)। आप संयोजन से पहले कॉलम को ऑर्डर कर सकते हैं। यह Oracle, Postgre, और अन्य में एक विंडो फ़ंक्शन की तरह काम करता है... substring_index सूची केवल समय के अवरोही क्रम में होने के कारण, केवल पहला संयोजित मान प्राप्त कर रहा है।



  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 क्वेरी माध्यमिक तालिकाएँ एकाधिक आइटम हैं?

  2. त्रुटि 2006 (HY000) पंक्ति 1 पर:MySQL सर्वर चला गया है

  3. SQL सर्वर में MySQL TIMESTAMP कॉलम के साथ कार्य करना

  4. $_POST के साथ समस्या, यदि जारीकर्ता () और mysql_fetch_assoc ():गूंज सही मान देता है, पृष्ठ स्रोत हमेशा अन्य मान देता है

  5. एक कॉलम नंबर का उपयोग करके MySQL में किसी टेबल से कॉलम को कैसे ड्रॉप करें