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

आईडी और नवीनतम डेटाटाइम द्वारा MySQL समूह

मुझे लगता है कि नीचे के साथ आप जो चाहते हैं उसे प्राप्त कर सकते हैं, इन कार्यों को "समूह-वार अधिकतम" कहा जाता है।

विकल्प 1

यह समझने में सबसे आसान है, एक सबक्वेरी अधिकतम TID लौटाएगी max . से सभी उपयोगकर्ताओं के लिए Group By . के साथ प्रयोग किया जाता है और हम उन आईडी के लिए सभी डेटा प्राप्त करने के लिए एक अन्य क्वेरी करते हैं।

 Select TID, TData, TUserID, TViewedAt
 From Test 
 Where TID In(
    Select Max(TID)
    From Test
    Group By TUserID
)

विकल्प 2

समझने में थोड़ा अधिक जटिल है, लेकिन संभवतः अधिक कुशल है, यह इस आधार पर काम करता है कि जब t1.TViewedAt अपने अधिकतम मूल्य पर है, कोई t2.TViewedAt . नहीं है अधिक मान के साथ और t2 पंक्तियों के मान NULL . होंगे ।

SELECT t1.TID, t1.TData, t1.TUserID, t1.TViewedAt
FROM Test t1
LEFT JOIN Test t2 ON t1.TUserID = t2.TUserID AND t1.TViewedAt < t2.TViewedAt
WHERE t2.TUserID IS NULL;

परिणाम

TID TData   TUserID   TViewedAt
4   test3   123       2012-10-05 00:00:00.000
5   test2   213       2012-10-03 00:00:00.000


  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. Mysql द्वारा आदेश हटाएं

  3. MySQL स्थापित करें:त्रुटि:मणि देशी एक्सटेंशन बनाने में विफल

  4. PHP/Mysql विशेष वर्ण प्रविष्टियां काट दी जा रही हैं

  5. PhpMyadmin में अधिकतम निष्पादन समय