issue表
employee_table表
Union基础方法
SELECT 1, 2 UNION SELECT 1, 2;
SELECT 1, 2 UNION ALL SELECT 1, 2;
Union使用规则
Union 有他的强大之处,详细介绍之前,首先明确一下Union 的使用注意规则。
Union 必须由两条或者两条以上的SELECT 语句组成,语句之间使用Union 链接。Union 中的每个查询必须包含相同的列、表达式或者聚合函数,他们出现的顺序可以不一致(这里指查询字段相同,表不一定一样)- 列的数据类型必须兼容,兼容的含义是必须是数据库可以隐含的转换他们的类型
多表关联
-- union 多表关联
SELECT
NAME,
create_time
FROM
issue
UNION
SELECT
employee_name,
create_time
FROM
employee_table;
从上面的检索结果能看出,我们将两个表的数据组合了起来。Union 检索遇到不一致的字段名称时候,会使用第一条SELECT 的查询字段名称,或者你使用别名来改变查询字段名称
区分多表
虽然结果混合在一起没有任何问题,但是当显示到页面的时候,我们需要给用户和文章不同的链接或者其他的区分。所以我们必须确定该条记录来自于哪张表,我们可以添加一个别名来作为表名。
-- union 多表关联
SELECT
NAME,
create_time,
'issue' AS table_name
FROM
issue
UNION
SELECT
employee_name,
create_time,
'employee' AS table_name
FROM
employee_table;
包含重复、去除重复
mysql 在查询结果集中帮我们自动去除了重复的行 ,一般情况下这样结果是好的,但是如果需要的情况下,我们可以使用Union All 操作符来取消自动合并功能 。
在多表中,Union 如果是是返回的字段都相同才会被去重。
没有去重:
-- union 多表关联
SELECT
NAME,
create_time,
'issue' AS table_name
FROM
issue
UNION
SELECT
employee_name,
create_time,
'employee' AS table_name
FROM
employee_table;
去重
-- union 多表关联
SELECT
NAME
FROM
issue
UNION
SELECT
employee_name
FROM
employee_table;
|