从简单实例学习MySQL-Union

目录

定义

适用情况

使用要求

使用实例

union VS union all

 区分多表


建议:可以先看定义,后直接看实例,通过实例自己总结适用情况使用要求

定义

UNION并查询或复合查询。通常一次查询只有一个结果集,使用Union可以合并多个查询的结果集。

语法:

select 列1,列2 from test1 union select 列1,列2 from test2;

适用情况

  1. 从多个表中查询相似结构的数据,返回一个结果集
  2. 从单个表中多次查询,将结果合并返回一个结果集

使用要求

  1. 查询表的列数必须一致,如果不一致,会报错:两个查询语句列数不同
  2. 查询表的列的数据结构必须近似(可以发生类型转换)

使用实例

现有两表:test1 和 test2,以下实例都将以这两个表为实例

union VS union all

union 去重,两个表如果查询的列数据一致,那么会将这条数据去除掉

union all 不去重,会查到相同的字段

union

例:采用union 方法,查询两个表的id和name字段,字段内容没有全部重复,所以查到了两表中的全部字段

select id,name from test union select id,name from test2;

 例:采用union方法,查询两个表的id字段,字段有重复内容,所以会去掉重复内容

select id from test union select id from test2;

 例:采用union方法,查询test表的id和name字段,使用id等于1和等于4000的字段,没有全部重复,所以不会去重

select id,name from test where id = 1 union select id,name from test where id = 4000;

union all

例:采用union all方法,查询两个表的id字段,字段有重复内容,不会去掉重复内容

select id from test union all select id from test2;

 区分多表

由于数据来源于多个表,有可能要对于表进行区分,所以可以在使用时候,通过语句新增一个字段来标识不同的表 

例:从两个表查询id 并进行标记,第一个表标记为test,第二个表标记为test2

select id,"test" as table_name from test union select id,"test2" as table_name from test2;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值