自引用表sql从包含的元素中选择最后一个元素

5q4ezhmt  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(154)

我有table:

create table Branches(
    Id int primary key identity,
    IdSection int not null,
    IdMasterBranch int null,
    [Name] varchar(100) not null,
    [Description] varchar(300) null
    )

    create table Threads(
    Id int primary key identity,
    IdBranch int not null,
    IdUserAuthor int not null,
    [Name] varchar(100) not null,
    IsPinned bit not null,
    IsOpen bit not null,
    HasPoll bit not null
    )

    create table Posts(
    Id int primary key identity,
    IdThread int not null,
    IdUserAuthor int not null,
    Body varchar(4000) not null,
    IsEdited bit not null,
    [Index] int not null,
    Created datetime2 not null,
    Updated datetime2 null
    )

分支是自引用表,它包含另一个分支。我想写一个sql请求来选择所有主分支(idmasterbranch为空)以及最后一个线程和最后一个post。像这样:

select * from Branches branch 
left join BranchModerators moderator on branch.Id = moderator.IdBranch 
left join Threads thread on branch.Id = thread.IdBranch 
left join (select * from (
select *,
       ROW_NUMBER() over (
                     partition by IdThread 
                     order by [Index] desc
               ) as RowNumber
  from Posts
  ) groups
  where groups.RowNumber = 1) lastPost on thread.Id = lastPost.IdThread

但我想采取最后一个线程和包括内部分支后太。
最好的解决办法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题