Ваш вопрос немного расплывчатый. Однако, если у вас есть поле с указанием ваших критериев, чтобы быть "топ", например, голосов:
Для MySQL вы можете использовать оператор select следующим образом:
SELECT *
FROM comments
JOIN messages ON comments.mid = messages.mid
WHERE messages.mid = 1
ORDER BY comments.topvotes DESC
LIMIT 10;
Этот запрос даст вам 10 самых популярных комментариев за сообщение 1.
Более сложный запрос для сортировки комментариев к первым пяти сообщениям:
SELECT comments.cid
FROM comments
JOIN messages ON comments.mid = messages.mid
WHERE comments.mid IN(
SELECT messages.mid
FROM messages
ORDER BY messages.votes DESC
LIMIT 5)
ORDER BY messages.mid, comments.votes DESC;
Но я не могу понять, как ограничить это 10 главными комментариями. Я бы использовал курсор, но в последнее время я слишком много работал с Oracle на Oracle. Так что, если у кого-то есть хорошее решение, как выразить это в одном выделении с помощью подзапроса, пожалуйста, стреляйте ...