mysql union 的用法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: union 的用法 (一般用于多张表的union)

合并查询结果



将两次或者两次以上的结果合并在一起



要求: 两次查询的列数一致


推荐,查询每一列,相对应的列类型是一样的


多次sql语句 取出 的列名可以不一致,此时以取第一个sql 的列名为准。




如果不同的语句中取出的行  有每个列的值都相同,那么相同的行将被合并成一行(去重复)


如果不想去重复union加上 all





创建表格


create table ta


(id char(1) default null,


num int not null default 0


) engine=InnoDB  charset=utf8;



insert into ta


(id,num)


values


('a',10),


('b',20),


('c',30),


('d',40);

create table tb


(id char(1) default null,


num int not null default 0


) engine=InnoDB  charset=utf8;





insert into tb


(id,num)


values


('a',50),


('b',60),


('c',70),


('d',80);

1  合并 两张表格

2  合并两张表单把相同id下的数值sum求和 

发现问题

 使用聚合函数时 不许有空格

Sum(num)

Sum (num)

将会把  sum  识别为 表 报该数据库下不存在该表单错误


Error 1630(42000)





注意:如果子句里 有 order by | limit 需要 union 两边加小括号


例如


(select  good_id,cat_id,goods_name,shop_price from goods _id =where cat_id = 4 order by



shop_price desc )union (select  good_id,cat_id,goods_name,shop_price from goods _id =where



cat_id = 5 order by shop_price desc);







但是 容易有误


解决方案


1  order by 尽量放在最后使用  即岁最终合并后的结果 进行排序


(select  good_id,cat_id,goods_name,shop_price from goods _id =where cat_id = 4 )union



(select  good_id,cat_id,goods_name,shop_price from goods _id =where cat_id = 5  order by



shop_price desc;

2  每个子语句 加上limit

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 索引
mysql中EXISTS用法注意点
mysql中EXISTS用法注意点
|
1月前
|
存储 SQL 关系型数据库
mysql用法
mysql用法
39 4
|
2月前
|
存储 自然语言处理 关系型数据库
MySQL的match用法说明
MySQL的match用法说明
106 4
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的用法
MySQL的用法
54 1
|
3月前
|
存储 关系型数据库 MySQL
mysql中的left join、right join 、inner join的详细用法
【8月更文挑战第16天】在MySQL中,`INNER JOIN`、`LEFT JOIN`与`RIGHT JOIN`用于连接多表。`INNER JOIN`仅返回两表中匹配的行;`LEFT JOIN`保证左表所有行出现于结果中,右表无匹配时以NULL填充;`RIGHT JOIN`则相反,保证右表所有行出现于结果中。例如,查询学生及其成绩时,`INNER JOIN`仅显示有成绩的学生;`LEFT JOIN`显示所有学生及他们对应的成绩,无成绩者成绩列为空;`RIGHT JOIN`显示所有成绩及对应学生信息,无学生信息的成绩条目则为空。
|
4月前
|
存储 JSON 关系型数据库
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
542 2
mysql中find_in_set()函数用法详解及增强函数
|
3月前
|
数据采集 SQL 关系型数据库
在 MySQL 中使用 Union
【8月更文挑战第11天】
229 0
在 MySQL 中使用 Union
|
2月前
|
存储 自然语言处理 关系型数据库
全文索引MySQL的match用法是什么?
【9月更文挑战第2天】全文索引MySQL的match用法是什么?
81 0
|
4月前
|
关系型数据库 MySQL 数据库
MySQL:union all与union区别详解
MySQL:union all与union区别详解
|
5月前
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结