如何合并两条SQL查询结果集并按LastUpdatedOn排序(无需临时表)
你可以直接用 UNION ALL 拼接两个查询结果,再在外层做统一排序,完全不需要用到临时表,对数据库权限没有额外要求,符合你共享托管服务器的使用场景:
SELECT FamilyId, LastUpdatedOn FROM ( -- 来自Members表的最近更新家庭记录 SELECT DISTINCT TOP 3 FamilyId, MAX(LastUpdatedOn) AS LastUpdatedOn FROM Members GROUP BY FamilyId ORDER BY MAX(LastUpdatedOn) DESC UNION ALL -- 来自Families表的最近更新家庭记录 SELECT TOP 3 Id AS FamilyId, LastUpdatedOn FROM Families ORDER BY LastUpdatedOn DESC ) AS CombinedResults ORDER BY LastUpdatedOn DESC;
说明
- 选择
UNION ALL而非UNION,是因为你要求保留相同FamilyId的多条记录,UNION会自动剔除完全重复的行,不符合需求 - 如果需要限制最终返回的总条数,直接在外层
SELECT后加TOP N即可 - 最终结果会将两个查询的所有返回结果合并后,统一按更新时间倒序排列,满足你获取最近有修改的家庭ID的需求
内容的提问来源于stack exchange,提问作者u936293
相关产品推荐
相关产品推荐

