Реализация САМОГО последнего комментария - SQL Server - PullRequest
1 голос
/ 11 октября 2009

Итак, предположим, у меня есть несколько записей в блоге, и я хочу найти самый последний комментарий в каждой из них, как бы я узнал об этом в SQL Server.

У меня есть список целочисленных идентификаторов этих записей блога во временной таблице. Что-то вроде select top 1 не работает в этом случае.

Подход, который приходит мне в голову, заключается в зацикливании, и мы все знаем, как много людей предпочитают избегать зацикливания в SQL Server.

Ответы [ 2 ]

3 голосов
/ 11 октября 2009

Вы можете использовать подзапрос в операторе SELECT. Что-то вроде:

SELECT  post.id, 
        most_recent_comment_id = 
            (SELECT TOP 1 comment.id 
             FROM comment 
             WHERE comment.post_id = post.id
             ORDER BY comment.date DESC)
FROM posts
ORDER BY posts.date

или что-то похожее на это.

1 голос
/ 11 октября 2009

Ну, вот один из способов:

SELECT c.*
FROM BlogComments c
JOIN #TempEntries t ON c.EntryID = t.EntryID
JOIN (
    SELECT m.EntryID, MAX(m.CommentID) AS CommentID
    FROM BlogComments m
    GROUP BY m.EntryID
    ) m  
        ON  m.EntryID = c.EntryID
        AND m.CommentID = c.CommentID
...