SQL中UNION关键字怎么用

网友投稿 271 2023-11-26

SQL中UNION关键字怎么用

小编给大家分享一下SQL中UNION关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

SQL中UNION关键字怎么用

SQL中的UNION关键字,将实现将多个查询条件中的结果展示出来。

UNION

  UNION的中文含义是联合的意思,即合并两个或多个 SELECT 语句的结果。使用技巧如下:

UNION 内部的每个 SELECT 语句必须拥有相同数量的列。

列必须拥有相似的数据类型。

每个 SELECT 语句中的列的顺序必须相同。

相同数量的列

如下图,使用上一章介绍的数据作为演示数据

分别建立表s_user 和表s_user_1

CREATE TABLE `s_user` (   `userid` int(11NOT NULL AUTO_INCREMENT,   `user_name` varchar(255DEFAULT NULL,   `name` varchar(255DEFAULT NULL,   `pass_word` varchar(255DEFAULT NULL,   `salt` varchar(255DEFAULT NULL,   `state` varchar(255DEFAULT 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小米小米12312312312022-02-10 19:48:43); INSERT INTO `test`.`s_user`(`userid``user_name``name``pass_word``salt``state``create_time`VALUES (2小白,小白12312312312022-02-10 19:48:43); INSERT INTO `test`.`s_user_1`(`userid``user_name``name``pass_word``salt``state``create_time`VALUES (1小红小红12312312312022-02-10 19:48:43); INSERT INTO `test`.`s_user_1`(`userid``user_name``name``pass_word``salt``state``create_time`VALUES (2小黄小黄12312312312022-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_wordFROM `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小白小白12312312312022-02-10 19:48:43);

首先执行:

SELECT user_name,name,pass_word,salt FROM `s_user` UNION SELECT user_name,name,pass_word,salt FROM `s_user_1`

执行结果:

再次执行

SELECT user_name,name,pass_word,salt FROM `s_user` UNION ALL SELECT user_name,name,pass_word,salt FROM `s_user_1`

执行结果:

可以看到UNION关联的去除了重复项,而UNION ALL查询出了所有的值,没有去除重复数据。

以上是“SQL中UNION关键字怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库系统文件启动数据库
下一篇:数据库镜像和跨数据库事务
相关文章

 发表评论

暂时没有评论,来抢沙发吧~