UNION 和 UNION ALL的用法

UNION 和 UNION ALL操作符都用于合并两个或多个 SELECT 语句的结果集,不同的是UNION把结果集去重了(即不包含重复的值),而UNION ALL不去重(即含有重复的值)。还有一点要注意,UNION 内部的 SELECT 语句查询的字段必须拥有相同数量的列,列也必须拥有相似的数据类型,并且每条 SELECT 语句中的列的顺序必须相同

为了更好的理解UNION 和 UNION ALL的用法,首先创建表,插入数据

1.创建表student_info

CREATE TABLE `student_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `class` varchar(255) DEFAULT NULL,
  `student_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

2.插入数据

INSERT INTO student_info VALUES(NULL,'A班','张三');
INSERT INTO student_info VALUES(NULL,'A班','李四');
INSERT INTO student_info VALUES(NULL,'A班','李四');
INSERT INTO student_info VALUES(NULL,'B班','孙六');
INSERT INTO student_info VALUES(NULL,'B班','张三');
INSERT INTO student_info VALUES(NULL,'B班','王五');

3.实际操作

3.1查看所有在A、B班不同学生名字(即不含重复的姓名)

sql语句如下:

SELECT student_name from student_info where class='A班'
UNION
SELECT student_name from student_info where class='B班';

运行结果:只显示了一个张三和李四,而非两个张三和李四

3.2查看在A、B班所有学生的名字

sql语句如下:

SELECT student_name from student_info where class='A班'
UNION ALL
SELECT student_name from student_info where class='B班';

运行结果:所有的张三和李四学生都查出来了

3.3查看所有在A、B班不同学生班级和名字(即班级和姓名不能同时重复)

sql语句如下:

SELECT class,student_name from student_info where class='A班'
UNION
SELECT class,student_name from student_info where class='B班';

运行结果:A班的李四学生只有一个查出来了

3.3查询字段个数不同效果

SELECT student_name from student_info where class='A班'
UNION
SELECT class,student_name from student_info where class='B班';

会提示:[Err] 1222 - The used SELECT statements have a different number of columns

意思就是:[Err] 1222 -使用的SELECT语句有不同数量的列

同样也可以自己试试查询的字段顺序不同,类型不同,,,

 

------------------------------------希望你有所收获,喜欢的话就点个赞吧,哈哈哈------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值