首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:从最近的子表条目中选择列

SQL:从最近的子表条目中选择列
EN

Stack Overflow用户
提问于 2020-06-30 16:43:18
回答 2查看 56关注 0票数 0

目前,我正试图找到一种方法来检索表中的所有记录及其最近的关联子记录。简化的表结构如下:

代码语言:javascript
复制
Parents        Children
______         ________
Id             Id
Age            ParentId 
               FirstName
               LastName
               DateCreated

我想让所有的父母都知道他们最近创建的孩子的名字和姓氏(由DateCreated命令)。这些表在实践中非常大,我希望通过选择所有父母及其所有关联的子表获得一些性能,这是我目前通过以下查询获得的结果:

代码语言:javascript
复制
select * from parents p join children c on p.id = c.parentid

然后用内存中的应用程序代码找到所需的结果。

所有的帮助都是感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-30 16:45:12

您可以使用子查询进行筛选:

代码语言:javascript
复制
select p.*, c.firstname, c.lastname
from parents p
inner join children c on c.parentid = p.id
where c.datecreated = (
    select max(c1.datecreated)
    from children c1
    where c1.parentid = c.parentid
) c

另一种选择是横向连接:

代码语言:javascript
复制
select p.*, c.firstname, c.lastname
from parents p
cross apply (
    select top (1) c.*
    from children c
    where c.parentid = p.id
    order by c.datecreated desc
)
票数 1
EN

Stack Overflow用户

发布于 2020-06-30 16:45:43

如果我正确理解,您可以使用横向连接(即apply):

代码语言:javascript
复制
select p.*, c.*
from parents p cross apply
     (select top (1) c.*
      from children c 
      where p.id = c.parentid
      order by c.datecreated desc
     ) c;

要获得最佳性能,需要在children(parentid, datecreated desc)上建立索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62662249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档