#MYSQL#这是我MySQL的第八篇教程。本篇主要介绍的是MySQL的组合查询的用法。在大多数的SQL查询中都只包含从一个或者多个表中返回数据的单条SELECT语句,MySQL其实也支持允许执行多条SELECT语句,并将结果作为单个结果集返回,这些组合查询通常称为并(union)或者叫做复合查询。
组合查询也有他的使用场景,第一个就是在单个查询中从不同的表返回类似结构的数据时,第二个就是在复单个表执行多个查询,按单个查询返回数据。在多数的情况下组合相同表的两个查询完成的工作与多个WHERE子句条件的单条查询完成的工作是相同的。
首先来看一下如何创建组合查询,在创建组合查询的时候使用的操作符是UNION,利用UNION来将多条SELECT语句进行关联,他所作的很简单,就这在多条SELECT语语句之间加上UNION就可以了。
举一个例子,假如需要查询价格小于等于5的所有物品的一个列表,而且还想查询出供应商编号为1001和1002的所有物品,就可以使用UNION来连接两个SELECT的查询语句,在这里就做到鱼和熊掌可兼得的事情。这条语句就是由两条SELECT语句组成,中间使用UNION来进行连接,
union的使用规则,union组合查询是非常容易实现的,但是有几点需要注意,第一就是UNION必须由两条或者两条以上的SELECT语句组成,一条也就不叫组了。第二点,UNION中的每个查询必须包含相同的列,表达式或者聚集函数。
UNION的另外一个功能就是包含或者取消重复的行。union从查询结果集中自动去除了重复的行,换句话说就是他的行与单条的SELECT语句中使用多个WHERE子句条件是一样的。这是UNION的默认功能,但是如果需要可以改变他,就是说如果需要匹配所有的行,可以使用UNION ALL而不是UNION. 在使用UNION ALL时MySQL不取消重复的行。
UNION的另外一个用处就是可以对组合结果进行排序,在SELECT语句中输出的结果集需要排序是使用ORDER BY子句,它必须出现在最后一条的SELECT语句之后,对于组合查询的结果集来说,不存在用一直方式排序,而且在使用组合排序的时候只能使用一次ORDER BY排序,不管你有几条SELECT语句进行组合。
在这条UNION语句当中最后一个SELECT语句使用 了,ORDER BY子句,虽然ORDER BY子句似乎只是最后一个SELECT语句的专属,但是实际上他是对整体的结果集进行了排序,而不单单只是对最后一个SELECT语句进行排序的。
以上内容就是全部的组合查询UNION的使用方法和注意事项,希望对你在日常开发过程中能有所帮助。