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

Sql क्वेरी - सीमित क्वेरी परिणाम

दो उपयोगकर्ता चर का उपयोग करके और एक ही लगातार store_id की गणना करके, आप <= 5 . को बदल सकते हैं आप जो भी सीमा चाहते हैं

SELECT a.*
FROM (
 SELECT store_id, user_id, count(1) as visits 
 FROM shopping
 WHERE store_id IN (60,61,62,63,64,65,66)
 GROUP BY store_id, user_id
 ORDER BY store_id, visits desc, user_id
) a,
(SELECT @prev:=-1, @count:=1) b
WHERE
 CASE WHEN @prev<>a.store_id THEN
   CASE WHEN @prev:=a.store_id THEN
    @count:=1
   END
 ELSE
   @count:[email protected]+1
 END <= 5

अनुरोध के अनुसार कुछ स्पष्टीकरण संपादित करें:

पहला सबक्वेरी (ए) वह है जो डेटा को समूह और ऑर्डर करता है ताकि आपके पास डेटा होगा:

store_id | user_id | visits
---------+---------+-------
 60           1       5
 60           2       3
 60           3       1
 61           2       4
 61           3       2

दूसरा सबक्वेरी (बी) उपयोगकर्ता चर @prev में प्रवेश करें -1 और @count . के साथ 1

. के साथ

फिर हम सबक्वेरी से सभी डेटा चुनते हैं (ए) case . में स्थिति की पुष्टि करते हुए ।

  • सत्यापित करें कि पिछला store_id (@prev .) ) हमने देखा है कि वर्तमान store_id से अलग है। चूंकि पहले @prev -1 के बराबर है वर्तमान store_id से मेल खाने वाला कुछ भी नहीं है इसलिए स्थिति <> यह सच है कि हम दर्ज करते हैं तो दूसरा मामला है जो सिर्फ मूल्य बदलने के लिए काम करता है @prev वर्तमान store_id के साथ। यह चाल है इसलिए मैं दो उपयोगकर्ता चर बदल सकता हूं @count और @prev उसी स्थिति में।

  • अगर पिछला store_id @prev . के बराबर है बस @count बढ़ा दें चर।

  • हम जाँचते हैं कि गिनती उस मान के भीतर है जो हम चाहते हैं इसलिए <= 5

तो हमारे परीक्षण डेटा के साथ:

step | @prev | @count | store_id | user_id | visits
-----+-------+--------+----------+---------+-------
  0      -1      1    
  1      60      1        60          1        5 
  2      60      2        60          2        3
  3      60      3        60          3        1
  4      61      1        61          2        4
  5      61      2        61          3        2   


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पकाने की विधि डेटाबेस, संघटक द्वारा खोजें

  2. VB.NET MySQL कनेक्शन

  3. मैं mysql में तारीख से महीने कैसे प्राप्त करूं?

  4. MySQL का उपयोग करके तीन तालिकाओं में शामिल होना

  5. लार्वा अंतरिक्ष द्वारा अलग किए गए कई शब्दों की खोज करता है