LIMIT only stops the number of results the statement returns. What you’re looking for is generally called analytic/windowing/ranking functions – which MySQL doesn’t support but you can emulate using variables:
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
If you don’t change SELECT x.*
, the result set will include the rank
and var_category
values – you’ll have to specify the columns you really want if this isn’t the case.