查询简介(七)之组合查询

阅读正文之前一定要仔细阅读下边这些建议:

1. 最好使用电脑观看。

2. 如果你非要使用手机观看,那请把字体调整到最小,这样观看效果会好一些。

3. 碎片化阅读并不会得到真正的知识提升,要想有提升还得找张书桌认认真真看一会书,或者我们公众号的文章。

4. 如果觉得不错,各位帮着转发转发,如果觉得有问题或者写的哪不清晰,务必私聊我~

5. 本公众号的文章都是需要被系统性学习的,在阅读本篇文章前最好已经阅读过下边几篇文章,要不然可能会有阅读不畅的体验:

我们前边说的都是单条查询语句,其实多条查询语句的查询结果也可以被合并起来,这种将多个查询的查询结果合并起来的查询方式称为,或者。

查询列表相同的情况

比如说下边这两条查询语句:

这两个查询语句可以使用来合并起来:

多个查询语句也直接用来合并起来:

当然,这种将对于查询列表相同的多个查询合并起来的情况可以通过修改子句来达到目的,比如上边的查询可以替换为:

具体使用哪种查询方式还需要分析这两种查询的性能消耗,我们后边在优化查询时会详细唠叨的。

查询列表不同的情况

对于查询列表不同的情况就只能用来合并多个查询了,比方说下边这两个查询:

第一个查询是从表中查询这两个列的数据,第二个查询是从表中查询这两个列的数据。虽然和是两个不同的查询列表,但是这两个列组合中和都是整数类型的,和都是字符串类型的,所以也可以把它们的查询结果拼接到一起:

不过需要注意,查询的结果集中显示的列名将以第一个查询中的列名为准。虽然几个查询的数据都可以被放入同一个结果集,但是结果集总是要有一个列名的吧,所以就规定采用第一个查询中的列名,上边的例子就采用了第一个查询中的作为结果集的列名。

包含或取消重复的行

我们看下边这两个查询:

很显然,表里有3条记录,表里有3条记录,我们把它们合并起来看一下:

为什么合并后的结果只剩下了4条记录呢?因为使用来合并多个查询的记录会默认过滤掉重复的记录。由于表和表都有这两条记录,所以合并后的结果集就把他俩去重了。如果我们想要保留重复记录,可以使用来连接多个查询:

对组合查询结果排序

会把各个查询的结果汇总到一块,我们只能对最后总的结果集进行排序,而不能分别对各个查询进行排序。由于最后的结果集展示的列名是第一个查询中给定的列名,所以子句中指定的排序列也必须是第一个查询中给定的列名,比如这样:

如果我们分别对各个查询进行排序会报错的:

合并查询注意事项

被合并的各个查询的查询对象个数必须相同。

不能一个查询的结果集中有1个列,另一个却有2个列,这会报错的:

查询的结果集中显示的列名将以第一个查询中的列名为准。

各个查询语句中的查询列表的类型兼容就可以(也就是说不必完全相同)。

的类型是整数类型,是字符串类型,如果把这两个查询用合并起来,那么整个结果集的的列的类型将变成字符串类型。虽然这种类型转换是支持的,但是将不同类型的数据放在一个列中容易造成混乱,还是建议大家将各个查询的查询列表置为相同的类型。

题外话

写文章挺累的,有时候你觉得阅读挺流畅的,那其实是背后无数次修改的结果。如果你觉得不错请帮忙转发一下,万分感谢~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625G01LJ000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动