यह आपकी समस्या का समाधान कर सकता है:
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
सूची केवल समय के अवरोही क्रम में होने के कारण, केवल पहला संयोजित मान प्राप्त कर रहा है।