sql server 中union的用法

sql server 中union的用法,第1张

工具/原料

SQLSERVER2014  电脑

方法/步骤

1、首先来准备两个select查询,分别查询一个表。

2、用Union将这两个查询连接在一起并且运行SQL语句,出现下图的错误提示,因为Union连接的两个查询,列的数目必须一样。

3、进行修改,让其列的数目一样,还是报错,因为第二个查询中OrderTime是日期类型,而与其对应的第一个查询相应列是字符类型,类型不匹配导致。

4、通过Convert转化一下类型即可。

5、将第一个表和第二个表用Union合并,在将第二个表在和第一个表在Union合并一遍,发现最后一个表没合并进来。若让第三个表也合并进来需要运用Union All。

6、若项调整合并的表的顺序,用空字符串作为第一个列就可以让第二个表的顺序排到最前面。

7、若I想把合并的表放到一个新表里,则需要在第一个表的后面加Into语句。

union all,解释为联合所有\x0d\x0aUnion解释为联合\x0d\x0aunion或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。\x0d\x0a\x0d\x0a这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。\x0d\x0aSELECT column1, column2 from table1\x0d\x0aunion (all)\x0d\x0aselect column1, column2 from table2\x0d\x0a以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。\x0d\x0a\x0d\x0aUNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示。\x0d\x0a\x0d\x0a比如\x0d\x0aSELECT COLUMN1 FROM TABLE1的结果是\x0d\x0a1\x0d\x0a2\x0d\x0a3 \x0d\x0aSELECT COLUMN1 FROM TABLE2的结果是\x0d\x0a1\x0d\x0a5\x0d\x0a6\x0d\x0a\x0d\x0a分别都是三行,那么UNION ALL的结果就是6行\x0d\x0a1\x0d\x0a2\x0d\x0a3\x0d\x0a1\x0d\x0a5\x0d\x0a6\x0d\x0a而UNION会过滤掉上述结果中1的重复一行,结果是\x0d\x0a1\x0d\x0a2\x0d\x0a3\x0d\x0a5\x0d\x0a6\x0d\x0a五行结果

本节我们学习如何使用 UNION *** 作符将多条 SELECT 语句组合成一个结果集返回,即组合查询。下面是两种使用组合查询的场景:

UNION *** 作符用来组合多条 SQL 查询,只需要在各条 SELECT 语句之间放上关键字 UNION 。

比如,第一条 SQL 查询客户所在州为 IL IN 和 MI 的顾客信息:

运行结果:

第二条 SQL 则检索姓名为 Fun4All 的顾客:

运行结果:

组合上述两条 SQL 即为:

运行结果:

上述两条 SELECT 语句使用 UNION 关键字分隔, UNION 指示 DBMS 执行这两条 SELECT 语句,并把输出组合成一个查询结果。

并且,从组合查询的结果我们发现, UNION 并不仅仅是简单地将两个查询结果拼接在一起,而是对组合结果进行了去重。比如: Fun4All Jim Jones 在两条 SQL 中都有返回,而组合结果中却只有一条。

当然,你可以使用包含多个 WHERE 条件的 SQL 实现相同的检索目标:

在上文实践 UNION 时,我们发现 UNION 会对查询结果进行去重,重复的行会被自动取消。如果想返回所有的行时,可以使用 UNION ALL 。

使用 UNION ALL 组合查询的运行结果:

使用 UNION ALL DBMS 不会取消重复的行,因此这里返回 5 条记录。

SELECT 语句的输出用 ORDER BY 子句进行排序。不过,在用 UNION 组合查询时,只能使用一条 ORDER BY 子句,它必须位于最后一条 SELECT 语句之后。

下面的 SQL 对上文 UNION 返回的结果进行排序:

排序检索结果:

本节我们学习了如何使用 UNION 来组合 SELECT 语句,利用 UNION 可以将多条 SELECT 语句查询的结果作为一条组合查询返回,并且自动去除结果集中重复的行。

使用 UNION 可以极大地简化复杂的 WHERE 子句,此外,UNION 在组合多个工作表时也很有用,即使是有不匹配列名的表,在这种情况下,可以将 UNION 与别名组合,检索出一个结果集。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6613049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-25
下一篇 2023-03-25

发表评论

登录后才能评论

评论列表(0条)

保存