首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server组合结果集

Server组合结果集
EN

Stack Overflow用户
提问于 2012-12-13 16:29:37
回答 3查看 2.5K关注 0票数 3

我试图将两个不同查询的结果集组合成一个结果集。如果不使用存储过程(可能使用WITH关键字),这是可能的吗?

以下列情况为例:

代码语言:javascript
复制
SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows

请忽略建议OR的明显解决方案,因为我忽略了复杂的动态约束,只是为了说明我的观点。

我想将每个查询的结果分别,并将它们合并到一个结果集中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-13 16:34:42

您可以在这两个查询之间使用UNION ALL

代码语言:javascript
复制
SELECT *, '2013' Source
FROM student 
WHERE graduation_year = 2013 
UNION ALL
SELECT *, '2014' Source
FROM student 
WHERE graduation_year = 2014 

请参阅与Demo

我添加了一个名为source的字段,如果您需要标识该行来自哪个数据集,则如果不需要,可以排除该字段。

如果您想在临时表中这样做,可以使用以下内容:

代码语言:javascript
复制
select *
into #temp
from
(
  SELECT *, '2013' Source
  FROM student 
  WHERE graduation_year = 2013 
  UNION ALL
  SELECT *, '2014' Source
  FROM student 
  WHERE graduation_year = 2014 
) src


select * from #temp

请参阅与Demo

票数 2
EN

Stack Overflow用户

发布于 2012-12-13 16:35:39

您可以使用UNION ALL

代码语言:javascript
复制
SELECT *
FROM student 
WHERE graduation_year = 2013 
UNION ALL
SELECT *
FROM student 
WHERE graduation_year = 2014 
票数 2
EN

Stack Overflow用户

发布于 2012-12-13 16:33:08

代码语言:javascript
复制
SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
Union All -- Retrieves all results from both recordsets including both duplicates
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows

SELECT * FROM student WHERE graduation_year = 2013 -- returns 140 rows
Union -- Retrieves all results from both recordsets discarding duplicates
SELECT * FROM student WHERE graduation_year = 2014 -- returns 130 rows
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13864230

复制
相关文章

相似问题

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