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

पिछला रिकॉर्ड कैसे खोजें [एन-प्रति-समूह अधिकतम (टाइमस्टैम्प) <टाइमस्टैम्प]?

चर के साथ अंतिम दृष्टिकोण उचित है। आप यह भी कोशिश कर सकते हैं:

SELECT collect.*,
       (select max(timestamp)
        from data
        where data.channel_id = collect.channel_id AND data.timestamp < collect.timestamp
       ) AS prev_timestamp
FROM data AS collect 
WHERE collect.channel_id = 14 AND collect.timestamp >= 0 
ORDER BY collect.timestamp;

इसके अलावा, इस पर इंडेक्स बनाएं:कलेक्ट (चैनल_आईडी, टाइमस्टैम्प)।

संपादित करें:

निम्नलिखित सबसे तेज़ हो सकते हैं:

  select d.*,
         if(@channel_id = channel_id, @prev_timestamp, NULL) as prev_timestamp,
         @channel_id := channel_id, @prev_timestamp = timestamp
  from data d cross join
       (select @channel_id := 0, @prev_timestamp := 0) vars
  where collect.channel_id = 14 AND collect.timestamp >= 0 
  order by channel_id, timestamp;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JTextField सेट से बचनाकार्यक्रम के चारों ओर पाठ पुनरावृत्ति

  2. डेल्फ़ी में एक MySQL परिणाम फ़िल्टर करें

  3. संग्रहीत प्रक्रियाओं/कार्यों की सूची मैसकल कमांड लाइन

  4. रेल पर रूबी - ऐसी फ़ाइल लोड नहीं कर सकता - mysql2/2.2/mysql2 (LoadError)

  5. एकल पंक्ति नहीं मिलने पर डिफ़ॉल्ट मान लौटाएं