Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql Query:Wybierz górne 3 wiersze z tabeli dla każdej kategorii

LIMIT zatrzymuje tylko liczbę wyników zwracanych przez instrukcję. To, czego szukasz, to ogólnie funkcje analityczne/okienkowe/rankingowe – których MySQL nie obsługuje, ale możesz emulować za pomocą zmiennych:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @category != t.category THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.category AS var_category
          FROM TBL_ARTIKUJT t
          JOIN (SELECT @rownum := NULL, @category := '') r
      ORDER BY t.category) x
 WHERE x.rank <= 3

Jeśli nie zmienisz SELECT x.* , zestaw wyników będzie zawierał rank i var_category wartości - będziesz musiał określić kolumny, które naprawdę chcesz, jeśli tak nie jest.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak obliczyć procent kolumny w MySQL?

  2. Jak wstawić wartość hebrajską do bazy danych mysql w php

  3. Konwertuj skrypt MySQL na H2

  4. MySQL - jak długo tworzyć indeks?

  5. YEAR() Przykłady – MySQL