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

MySQL:विशिष्ट पंक्ति से पहले और बाद में 5 पंक्तियों का चयन करें

union all Using का उपयोग करना और अभिलेखों को सीमित करने के लिए उपश्रेणियों को यह करना चाहिए:

select * from  users where id = 5
union all (
  select * from users 
  where score <  (select score from users where id = 5) 
  order by score desc limit 2
) 
union all (
  select * from users 
  where score > (select score from users where id = 5) 
  order by score asc limit 2
) 
order by score

नमूना SQL Fiddle

<स्ट्राइक>

संपादित करें:मुझे लगता है कि स्कोर के अनुसार पंक्तियों को क्रमांकित करना एक बेहतर तरीका है और फिर आईडी 5 की पंक्तियों से संख्या -2 और +2 वाली पंक्तियों का चयन करें:

select id, name, score 
from (select 
      t.*, @rownum1 := @rownum1 + 1 as rank
      from users t, (select @rownum1 := 0) r
      order by score
     ) a,
     (select rank from (
        select t.*, 
        @rownum := @rownum + 1 as rank
        from users t, (select @rownum := 0) r
        order by score
     ) t
      where id = 5
   ) b
where b.rank between a.rank -2 and a.rank+2
order by score;    

नमूना SQL Fiddle



  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. MySQL डेटाबेस से कैसे कनेक्ट करें

  3. MySQL में गलत पूर्णांक (2147483647) डाला गया है?

  4. PHP पीडीओ लूप का उपयोग करके सम्मिलित करें

  5. ORDER BY क्लॉज में एक समग्र कार्य क्या कर सकता है?