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

SQL入门学习之浅析UNION关键字的用法

2024/5/4 11:08:34发布24次查看
我们开发过程中经常会使用到将多个查询结果都直接显示出来,那么应该怎么查询呢?本篇文章进行学习sql,来一起看看sql中的union关键字,看看它要怎么使用,希望对大家有所帮助!
sql中的union关键字,将实现将多个查询条件中的结果展示出来。
union  union的中文含义是联合的意思,即合并两个或多个 select 语句的结果。使用技巧如下:
union 内部的每个 select 语句必须拥有相同数量的列。列必须拥有相似的数据类型。每个 select 语句中的列的顺序必须相同。相同数量的列如下图,使用上一章介绍的数据作为演示数据
分别建立表s_user 和表s_user_1
create table `s_user` ( `userid` int(11) not null auto_increment, `user_name` varchar(255) default null, `name` varchar(255) default null, `pass_word` varchar(255) default null, `salt` varchar(255) default null, `state` varchar(255) default null, `create_time` datetime default null, primary key (`userid`)) engine=innodb auto_increment=3 default charset=utf8;
测试数据如下:
insert into `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) values (1, '小米', '小米', '123123', '123', '1', '2022-02-10 19:48:43');insert into `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) values (2, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');insert into `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) values (1, '小红', '小红', '123123', '123', '1', '2022-02-10 19:48:43');insert into `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) values (2, '小黄', '小黄', '123123', '123', '1', '2022-02-10 19:48:43');
union 内部的每个 select 语句必须拥有相同数量的列:先查询具有相同列的sql
select * from `s_user` union select * from `s_user_1`
查询出所有的列,可以看到,执行结果如下。
如果第一个查询是所有列,第二个查询是三个字段,那么查询结果又是怎么样呢,现在执行如下sql:
错误用法
select * from `s_user` union select userid,name,pass_word from `s_user_1`
错误提示:使用的select语句查询出不同的列数
正确用法
select userid,name,pass_word from `s_user` union select userid,name,pass_word from `s_user_1`
数据类型  上面看到了多个查询的列数必须相同,那么查询出的列数如果相同,查询字段的数据类型不同,是否可正常处理呢?下面将s_user查询中的pass_word换成create_time,进行查询。通过查询之后可以看到。在sql查询中,列的数据类型是无关的。当然实际业务中是不会将其设置成不同的类型的。
select userid,name,create_time from `s_user` union select pass_word,name,userid from `s_user_1`
列顺序  在使用union关键字进行查询时,是否和列的顺序有关呢,上面看到可能和列的顺序有关,可能也是无关的,那么进行一下测试。可以看到执行结果是和列的顺序无关的。在实际业务中是合并多个查询,因此我们在项目中定义是需要列的顺序一致的。
select create_time,userid,name from `s_user` union select pass_word,name,userid from `s_user_1`
union 和 union all区别  为了测试union 和 union all区别需要在数据表s_user_1中增加【小白】,与表s_user中的【小白】都存在数据库中,两个会有什么不同结果呢。
insert into `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) values (3, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');
首先执行:
select user_name,name,pass_word,saltfrom `s_user` union select user_name,name,pass_word,salt from `s_user_1`
执行结果:
再次执行
select user_name,name,pass_word,saltfrom `s_user` union all select user_name,name,pass_word,salt from `s_user_1`
执行结果:
可以看到union关联的去除了重复项,而union all查询出了所有的值,没有去除重复数据。
结语  好了,以上就是sql中的union关键字用法,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
推荐学习:mysql视频教程
以上就是sql入门学习之浅析union关键字的用法的详细内容。
该用户其它信息

VIP推荐

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