【问题标题】:How to merge two lists created from two queries如何合并从两个查询创建的两个列表
【发布时间】:2021-10-20 18:39:41
【问题描述】:
select distinct top 3 FamilyId,max(LastUpdatedOn) as LastUpdatedOn from Members
 group by FamilyId
 order by max(LastUpdatedOn) desc

产生:

FamilyId| LastUpdatedOn
933     | 2021-08-18 14:52:00
932     | 2021-08-18 14:40:00
874     | 2021-08-18 13:46:00
select top 3 Id as FamilyId,LastUpdatedOn from Families order by LastUpdatedOn desc

生产

FamilyId| LastUpdatedOn
933     |2021-08-18 14:42:00
932     |2021-08-18 14:39:00
834     |2021-08-16 03:18:00

如何合并/合并两个结果列表,同时根据LastUpdatedOn 保持排序顺序(是的,可以有多个具有相同FamilyId 的行)?我在托管共享服务器上,因此可能无权创建临时表。

背景:表Members 包含有关个人的信息,而Families 包含家庭级别的信息。每个成员都属于一个家庭,因此Members.FamilyId 指的是主键Families.Id。我想获取最后几个FamiliesFamilies.Id Members 已修改。

【问题讨论】:

  • 你想要的输出是什么?
  • @drum 基本上是两个查询的联合,但根据LastUpdatedOn维护排序顺序。
  • 用您正在使用的数据库标记您的问题。

标签: sql-server merge


【解决方案1】:

试试联合 IE) 从成员中选择不同的前 3 个 FamilyId,max(LastUpdatedOn) 作为 LastUpdatedOn 按 FamilyId 分组 按 max(LastUpdatedOn) desc 排序 联盟 选择前 3 个 ID 作为 FamilyId,LastUpdatedOn from Families order by LastUpdatedOn desc

这将返回所有 6 条记录。

你期待吗?

【讨论】:

  • 是的,但是 union 会丢失排序顺序。所以我将两个查询都转换为 CTE,我可以在 UNION 中对结果进行排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多