Вы можете использовать функции окна:
SELECT t.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY rand()) as seqnum
FROM Table t
WHERE NAME IN ('Article', 'Tips')
) t
WHERE seqnum <= 1;
Если вам нужно 2 строки на элемент, вы можете изменить «1» на «2».
Если вы хотите определенный элемент - самое новое или самое старое или самое длинное имя или самое красное, вы можете изменить ORDER BY
- при условии, что у вас есть столбцы для представления того, что вы хотите.
РЕДАКТИРОВАТЬ:
В более старых версиях вы можно выбирать элементы, используя коррелированный подзапрос:
select t.*
from t
where t.item <= coalesce( (select t2.item
from t t2
where t2.name = t.name
order by t2.item
limit 1 offset <n> - 1
), t.item
);
Вот DB Fiddle .