используя групповые и максимальные - PullRequest
3 голосов
/ 01 июня 2011

У меня есть таблица записей и таблица постконтентных значений.

Каждый раз, когда редактируется сообщение, запись добавляется в таблицу постконтентных значений.

В каждый такой момент поле под названием version будет увеличиваться на1 В таблице содержания.

Как я могу получить PostId из сообщения в состоянии и [Описание] из таблицы содержания, где версия для каждого сообщения - максимальная, т.е. группа по идентификатору сообщения, т.е. я ожидаю один необработанный для каждого сообщениятакой, что это «максимум версии» для поста

Ответы [ 3 ]

2 голосов
/ 01 июня 2011
select P.PostID,
       PC.[Description]
from Post as P
inner join 
  (
    select PostID,
           [Description],
           row_number() over(partition by PostID order by [Version] desc) as rn
    from PostContent
  ) as PC
  on P.PostID = PC.PostID
where PC.rn = 1
1 голос
/ 01 июня 2011
SELECT 
    p.[PostID],
    pc.[Description]
FROM
    [Post] AS p
INNER JOIN
    [PostContent] AS pc
    on p.PostID = pc.PostID 
WHERE
    pc.[Version] = (SELECT MAX([Version]) FROM PostContent WHERE PostID = p.PostID)
1 голос
/ 01 июня 2011

Я думаю, у вас есть таблица PostId in PostContent в качестве внешнего ключа, и вы хотите получить все postId с помощью их версии Heighest.

select max(version),PostId from PostContent groupby PostId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...