您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

MySQL如何合并查询结果

2024/4/18 14:11:16发布4次查看
多条 select 语句可以通过 union 关键字组合成单个结果集。合并 时,两个表对应的列数和数据类型必须相同。各个 select 语句之间使用 union 或 union all 关键字分隔。union 不使用关键字 all,执行的时候删除重复的记录,所有返回的行都是唯一的; 使用关键字 all 的作用是不删除重复行也不对结果进行自动排序。基本语法格式如下:
select column,... from table1union [all]select column,... from table2
查询所有价格小于 9 的水果的信息,查询 s_id 等于 101 和 103 所有的水果的信息, 使用 union 连接查询结果,sql 语句如下:
select s_id, f_name, f_pricefrom fruitswhere f_price < 9.0union select s_id, f_name, f_pricefrom fruitswhere s_id in(101,103);
合并查询结果如下:
union combines the results of multiple select statements into a single result set, as mentioned previously.。可以分开查看每个 select 语句的结果:
select s_id, f_name, f_price from fruits where f_price < 9.0;
select s_id, f_name, f_price from fruits where s_id in(101,103);
由分开查询的结果可以看到,第 1 条 select 语句查询价格小于 9 的水果,第 2 条 select 语句查询供应商 101 和 103 提供的水果。使用 union 将两条 select 语句分隔开,执行完毕之后 把输出结果组合成单个的结果集,并删除重复的记录。
在前面的例子中,由于使用了 union all 包含重复的行,导致分开查询时产生了相同的记录。union 从查询结果集中自动去除了重复的行,如果要返回所有匹配行,而不进行删除,可 以使用 union all。
查询所有价格小于 9 的水果的信息,查询 s_id 等于 101 和 103 的所有水果的信息, 使用 union all 连接查询结果,sql 语句如下:
select s_id, f_name, f_pricefrom fruitswhere f_price < 9.0union allselect s_id, f_name, f_pricefrom fruitswhere s_id in(101,103);
查询结果如下:
由结果可以看到,这里总的记录数等于两条 select 语句返回的记录数之和,连接查询结果 并没有去除重复的行。
提 示 :union 和 union all 的区别:使用 union all 的功能是不删除重复行,加上 all 关 键字语句执行时所需要的资源少,所以尽可能地使用它,因此知道有重复行但是想保留 这些行,确定查询结果中不会有重复数据或者不需要去掉重复数据的时候,应当使用 union all 以提高查询效率。 
以上就是mysql如何合并查询结果的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录