十、MySQL数据库之联合查询

今天我们再说一个重要的知识点,就是这个联合查询。当然啦,先百度百科一下,什么叫联合查询。

联合查询

十、MySQL数据库之联合查询_第1张图片

看啊,这个联合查询是合并多个相似的结果集,这个怎么去理解呢?就用java来说,就好比一个List,我们可以添加多个学生一样,先从A班级查到一堆学生,扔到集合中,再从B班查到另外一堆学生,再扔到集合中...

联合查询有那些

其实啊,上面百度百科说了。就是UNION和UNION ALL,但是他俩又有一些不一样的,这里我们分开来说一下。

UNION

UNION是指将所有的结果集都合并到一起,然后去掉相同的项。也就是Java中的Set集合。

大概知道个意思之后,我们来说一下用法

结果集A
UNION
结果集B
UNION
结果集C
...

知道了怎么用,我们来实战一下,先查询出来所有的学生

十、MySQL数据库之联合查询_第2张图片

然后我们跟UNION,UNION后面我们再查询一次所有的学生,我们来看看结果集是什么

十、MySQL数据库之联合查询_第3张图片

我们会发现,还是这四个学生,但是,我怎么证明这个UNION起作用了,这个我超前给大家讲一点点,就一点点的知识。去看执行计划。

使用关键词 EXPLAIN 加到整个的SQL前面。

十、MySQL数据库之联合查询_第4张图片

先看id 1,我们先查出表t_student,取到了4条数据

然后是id 2,查找的类型是UNION,然后又去t_student表中查询到4条记录,最后一个union 1 和 2。

这也就说明,我们的确是将两个结果集都去查询出来了,然后最后让UNION给去掉重复的,就变成4条了。

UNION ALL

然后我们再来看UNION ALL 的,用法和上面的UNION一样,我们再来修改一下上面的这个SQL。

十、MySQL数据库之联合查询_第5张图片

这个就是UNION ALL,它呢,不去重复,都给你合并到一起了。

然后我们再来看一下执行计划

十、MySQL数据库之联合查询_第6张图片

看,没有最后面的 UNION RESULT了。

 

这一讲就这些,大家好好去练习一下。

你可能感兴趣的:(Mysql_基础,mysql,union,union,all,union和union,all)