Mysql позволяет включать неагрегированные столбцы, и нет никакой гарантии детерминизма, но по моему опыту я почти всегда получаю первые значения.
Так что обычно (но не гарантировано) это даст вам первое
select *
from categories c, items i
where i.categoryid = c.id
group by c.id;
Если вы хотите гарантированно, вам нужно будет сделать что-то вроде
select categories.id, categories.name, items.id, items.name
from categories inner join
items on items.categoryid = categories.id and
items.id = (select min(items2.id) from items as items2 where items2.categoryid = category.id)
Если вы хотите получить случайные ответы, вам придется немного изменить подзапрос
select categories.id, categories.name, items.id, items.name
from categories inner join
items on items.categoryid = categories.id and
items.id = (select items2.id from items as items2 where items2.categoryid = category.id order by rand() limit 1)