Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql избира (n) редове от всяко събитие

Това, което се опитвате да направите, е да изберете определен брой записи на група. Това може да стане чрез използване на променливи във вашата заявка, подобни на тази:

select *
from
(
    SELECT sid, 
        state, 
        votes,
        @prev := @curr,
        @curr := state,
        @rank := IF(@prev = @curr, @rank+1, 1) AS rank
    FROM
    (
      select t1.sid, state, votes
      FROM table1 t1
      INNER JOIN table2 t2
          ON t1.sid=t2.sid
    ) src, (SELECT @curr := null, @prev := null, @rank := 1) r
    ORDER BY state, votes desc
) src
where rank <= 2
order by state, votes;

Вижте SQL Fiddle с демонстрация

Има и други начини да направите това, които са описани тук:

Използване LIMIT в рамките на GROUP BY, за да получите N резултата на група?



  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. mysql PDO и динамично SQL инжектиране на съхранена процедура

  3. Покажете „Няма намерени съвпадения“ или скрийте DIV резултати (AJAX и MySQL)

  4. ПРИ ДУБЛИРАНЕ НА КЛЮЧ + АВТОМАТИЧНО НАРАЩАНЕ проблем mysql

  5. Най-добри практики с исторически данни в MySQL база данни