LIMIT pouze zastaví počet výsledků, které příkaz vrátí. To, co hledáte, se obecně nazývá analytické/okenní/hodnotící funkce – které MySQL nepodporuje, ale můžete je emulovat pomocí proměnných:
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
Pokud nezměníte SELECT x.*
, sada výsledků bude obsahovat rank
a var_category
hodnoty – pokud tomu tak není, budete muset zadat sloupce, které skutečně chcete.