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: Следващата заявка ще ограничи 5 публикации за всеки от 20-те потребители:

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. Date връща нулеви стойности след изпращане на формуляр за редактиране в php

  3. Как мога да съхранявам масив от булеви стойности в база данни на MySql?

  4. MYSQL показва 0, дори ако резултатите не съществуват

  5. MySQL COUNT() и нулеви стойности