MySQL查询数据之合并查询结果的案例

60次阅读
没有评论

共计 3031 个字符,预计需要花费 8 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 MySQL 查询数据之合并查询结果的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

.

利用 union 关键字,可以给出多条 select 语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个 select 语句之间使用 union 或 union all 关键字分隔。

union 不使用关键字 all,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字 all 的作用是不删除重复行也不对结果进行自动排序。
基本语法格式为:

select column,...from table1union [all]select column,... from table2

【例 1】查询所有价格小于 9 的水果的信息,查询 s_id 等于 101 和 103 所有的水果的信息,使用 union 连接查询结果,SQL 语句如下:

mysql  select s_id,f_name,f_price -  from fruits -  where f_price  9.0
 -  union all
 -  select s_id,f_name,f_price -  from fruits -  where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+15 rows in set (0.06 sec)

union 将多个 select 语句的结果组合成一个结果集合。可以分开查看每个 select 语句的结果:

mysql  select s_id,f_name,f_price -  from fruits -  where f_price   9.0;+------+---------+---------+| s_id | f_name | f_price |+------+---------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 |+------+---------+---------+10 rows in set (0.00 sec)mysql  select s_id,f_name,f_price -  from fruits -  where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+5 rows in set (0.00 sec)

由分开查询结果可以看到,第 1 条 select 语句查询价格小于 9 的水果,第 2 条 select 语句查询供应商 101 和 103 提供的水果。

使用 union 将两条 select 语句分隔开,执行完毕之后把输出结果组合成单个的结果集,并删除重复的记录。

使用 union all 包含重复的行。union 从查询结果集中自动去除了重复的行,如果要返回所有匹配的行,而不进行删除,可以用 union all。

【例 2】查询所有价格小于 9 的水果的信息,查询 s_id 等于 101 和 103 的所有水果的信息,使用 union all 连接查询结果,SQL 语句如下:

mysql  select s_id,f_name,f_price -  from fruits -  where f_price 9.0
 -  union all
 -  select s_id,f_name,f_price -  from fruits -  where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+15 rows in set (0.00 sec)

可以看到,这里总的记录等于两条 select 语句返回的记录数之和,连接查询结果并没有去除重复的行。

union 和 union all 的区别:

使用 union all 的功能是不删除重复行,all 关键字语句执行时所需要的资源少,所以尽可能的使用它。

确定查询结果中不会有重复数据或者不需要去掉重复数据的时候,应当尽量使用 uninon all 以提高查询效率。

以上是“MySQL 查询数据之合并查询结果的案例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计3031字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)