集合并集运算(∪)与MySQL UNION
摘自维基百科关于集合的定义:
集合的特性:
无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序。
互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。有时需要对同一元素出现多次的情形进行刻画,可以使用多重集,其中的元素允许出现多次。
确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
集合中没有重复元素
以前我一直以为两个集合的并集就是简单的把两个集合的元素合并。
A∩A=A 交集的同一律
最后来说一下sql中的UNION
UNION表示并集,应该也是符合集合的运算的。所以
mysql> select curriculum_alias from tb_curriculum_tag;
+------------------+
| curriculum_alias |
+------------------+
| 7MTbUY8TcLx41EX |
| 7MTbUY8TcLx41EX |
| 7MTbUY8TcLx41EX |
| 5F9FAGvQi6BJJBd |
| 5F9FAGvQi6BJJBd |
| 5F9FAGvQi6BJJBd |
| 5F9FAGvQi6BJJBd |
| 5F9FAGvQi6BJJBd |
+------------------+
8 rows in set
使用union-集合A并集合A还是集合A
mysql> select distinct curriculum_alias from tb_curriculum_tag;
+------------------+
| curriculum_alias |
+------------------+
| 7MTbUY8TcLx41EX |
| 5F9FAGvQi6BJJBd |
+------------------+
2 rows in set
mysql> select curriculum_alias from tb_curriculum_tag union select curriculum_alias from tb_curriculum_tag;
+------------------+
| curriculum_alias |
+------------------+
| 7MTbUY8TcLx41EX |
| 5F9FAGvQi6BJJBd |
+------------------+
2 rows in set
======END======