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

एक ही क्वेरी में प्रत्येक DISTINCT एक के लिए कई रिकॉर्ड चुनें

आपको एक आदेशित क्वेरी पर दो अलग-अलग गणना करते हुए चर का उपयोग करना होगा:प्रत्येक उपयोगकर्ता के लिए पदों की संख्या पर एक और उपयोगकर्ताओं के लिए एक:

SELECT posts_counts.*
FROM (
  SELECT
    posts.*,
    @post_count:=case when @prec_user_id=user_id then @post_count+1 else 1 end as pc,
    case when @prec_user_id<>user_id then @user_count:[email protected]_count+1 else @user_count end as uc,
    @prec_user_id:=user_id
  FROM
    posts,
    (select @prec_user_id:=0, @user_count:=0, @post_count:=0) counts
  ORDER BY
    posts.user_id ) posts_counts
WHERE pc<5 and uc<4

संपादित करें: आप इस प्रश्न को आजमाने पर भी विचार कर सकते हैं:

SELECT * 
FROM `posts` 
WHERE
  `user_id` IN ( SELECT user_id FROM (
     SELECT DISTINCT `user_id` 
     FROM `posts` 
    ORDER BY `user_id` DESC 
    LIMIT 4 ) limit_users
  ) 
LIMIT 5

(यह प्रत्येक चयनित उपयोगकर्ता की सभी पोस्टों में से केवल 5 पदों का चयन करेगा, इसलिए यह अभी भी वह नहीं है जिसकी आपको आवश्यकता है, लेकिन यह सब-सबक्वेरी में LIMIT का उपयोग करने के लिए एक ट्रिक का उपयोग करता है)

संपादित करें2: अगली क्वेरी 20 उपयोगकर्ताओं में से प्रत्येक के लिए 5 पोस्ट सीमित कर देगी:

select posts_limited.*
from (
  select
    posts.*,
    @row:=if(@last_user=posts.user_id, @row+1, 1) as row,
   @last_user:=posts.user_id
  from
    posts inner join
    (select user_id from
      (select distinct user_id
       from posts
       order by user_id desc
       LIMIT 20) limit_users
    ) limit_users
    on posts.user_id = limit_users.user_id,
    (select @last_user:=0, @row:=0) r
  ) posts_limited
  where row<=5



  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. डेटाबेस में टिप्पणियों और पसंदों को लागू करना

  3. मैं MySQL बहुभुज ओवरलैप प्रश्नों को कैसे संभाल सकता हूं?

  4. JQuery AJAX और PHP का उपयोग करके mySQL में डुप्लिकेट प्रविष्टियां

  5. Php . में सटीक संख्या कैसे खोजें