最近突然被问到union与union all,当时就什么都想不起来了,因为基本没用到union这个语句,很久之前学习到她了。虽然不怎么使用,但是还是sql基础的一些东西,所以复习一下,不然下次继续尴尬。。
例如:库中有表table1、table2
id | name | phone |
1 | 张三 | 1234560 |
2 | 李四 | 1236987 |
id | name | address |
1 | 张三 | 深圳 |
2 | 李四 | 东莞 |
3 | 张三 | 深圳 |
现要查询出table1与table2所有name,那么语句如下:
select name from table1 union select name from table2;
查询结果:
name |
张三 |
李四 |
好了,结果中就会发现,自动去重了,如果table2中的张三非table1中的张三,那么结果是不准确的。这个时候union all就隆重登场,语句如下:
select name from table1 union all select name from table2;
查询结果:
name |
张三 |
李四 |
张三 |
李四 |
张三 |
这样所有name都查询出来了。
可能出现的问题:
union前面的select列是要跟后面的select列一样的,不然语法行不通。