首页 > 数据库技术 > 详细

SQL的组合查询

时间:2020-05-12 00:20:17      阅读:58      评论:0      收藏:0      [点我收藏+]

  在SQL中除了联结查询外,还有一种组合查询;组合查询是指将多条SELECT语句的结果作为一个查询结果集返回,这种查询方式通常称作为并(union)或复合查询(compound query)。

  1、组合查询的使用

  利用UNION操作符将数条SQL查询组合成一个结果集。

  2、组合查询的场景

  • 在一个查询中从不同表返回结构数据
  • 对一个表执行多个查询,按一个查询返回数据

  3、UNION的限制

  使用UNION组合SELECT语句的数目,SQL没有标准限制。但是,有些DBMS可能会对UNION能组合的最大语句数据有限制。

  4、UNION的规则

  • UNION必须由至少两条SELECT语句组成,语句之间用关键字UNION分隔。
  • UNION中的每个查询必须包含相同的列、表达式或聚集函数,不过各个列的次序可以不相同。
  • 列数据类型必须兼容,类型不必完全相同,但必须是DBMS可以隐含转换的类型。
  • 使用UNION组合查询时,只能使用一条ORDER BY子句,并且它必须位于最后一条SELECT语句之后,不过ORDER BY子句是对所有SELECT语句返回的所有结果进行排序。
  • UNION在需要组合多个表的数据时也很有用,即使是有不匹配列名的表,此时可以将UNION与别名组合,这样可以让每个SELECT语句返回相同的列名,检索一个结果集。

  5、UNION包含或取消重复的行

  • UNION从查询结果集中自动去除了重复的行,它的行为与一条SELECT语句中使用多个WHERE子句条件一样;使用UNION时,默认会将重复的行自动取消。
  • 若想改变UNION的默认行为,那么可以使用UNION ALL来返回所有的匹配行;也就是说,使用UNION ALL时,DBMS不取消重复的行。

  6、UNION与WHERE的差异

  • 理论上讲,从性能上看使用多条WHERE子句条件还是UNION应该没有实际的差别。不过,实践中可能会有些差异,最好是测试一下这两种方法,然后取其最优者。
  • 任何具有多个WHERE子句的SELECT语句都可以作为一个组合查询,即UNION几乎总是完成与多个WHERE条件相同的工作。
  • UNION ALL完成了WHERE子句完成不了的工作,也就是说若想要将每个条件的匹配行全部输出(包括重复的行),那么就必须使用UNION ALL,而不是WHERE。
  • 使用UNION可极大简化复杂的WHERE子句,简化从多个表中检索数据的工作。

  7、其他类型的UNION

  • EXCEPT:也称为MINUS,用来检索只在第一个表中存在而在第二个表中不存在的行。
  • INTERSECT:用来检索两个表中都存在的行。

  小结:实际上,这些UNION很少使用,因为相同的结果集可以利用联结得到。 

SQL的组合查询

原文:https://www.cnblogs.com/bien94/p/12873335.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!