seg0ro, посмелюсь предположить что тебе нужно получить самые последние записи для каждой из групп? Тогда мне кажется логичнее искать только те записи, которые существуют для каждой группы, то есть использовать JOIN. Ну и как ты выше написал группировать по mainid
SELECT `group`.*, `elements`.`time` FROM `group` JOIN `elements`
USING(`mainid`)
GROUP BY `group`.`mainid`
ORDER BY `elements`.`time` DESC