Я думаю, что самый простой верный подход - что-то вроде этого:
SELECT TOP 10
id,
title,
(SELECT MAX(commentdate)
FROM comment
WHERE postid = post.id
) AS commentdate
FROM post
ORDER BY commentdate DESC
;
но я бы не ожидал, что он будет работать очень хорошо. (Для каждого сообщения он находит самый последний комментарий, а затем использует его, чтобы найти десять сообщений, последние комментарии которых являются самыми последними.)
Способ, который будет работать намного лучше, но в некоторых случаях существует риск включения в него менее десяти результатов:
SELECT TOP 10
id,
title,
(SELECT MAX(commentdate)
FROM comment
WHERE postid = post.id
) AS commentdate
FROM post
WHERE id IN
( SELECT TOP 100
postid
FROM comment
ORDER BY commentdate DESC
)
ORDER BY commentdate DESC
;
, который находит сообщения, к которым относятся 100 последних комментариев & mdash; максимум 100 сообщений & mdash; а затем применяет вышеуказанный подход только к этим сообщениям. (Причина, по которой он может вернуть менее десяти сообщений, состоит в том, что все 100 последних комментариев могут принадлежать только девяти сообщениям - или только пяти сообщениям, или только одному сообщению.)
(Отказ от ответственности: я не проверял ни один из вышеуказанных запросов.)