Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySql:seleziona le prime 3 righe dalla tabella per ciascuna categoria

LIMIT interrompe solo il numero di risultati restituiti dall'istruzione. Quello che stai cercando è generalmente chiamato funzioni analitiche/windowing/ranking, che MySQL non supporta ma puoi emulare usando le variabili:

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

Se non modifichi SELECT x.* , il set di risultati includerà il rank e var_category valori:in caso contrario, dovrai specificare le colonne che desideri.