我是靠谱客的博主 痴情黄蜂,最近开发中收集的这篇文章主要介绍mysql:union 组合查询,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

issue表

image.png

employee_table表

image.png

Union基础方法

-- union 去除重复
SELECT 1, 2 UNION SELECT 1, 2;

image.png

-- union all 关联所有 包含重复
SELECT 1, 2 UNION ALL SELECT 1, 2;

image.png

Union使用规则

Union有他的强大之处,详细介绍之前,首先明确一下Union的使用注意规则。

  1. Union必须由两条或者两条以上的SELECT语句组成,语句之间使用Union链接。
  2. Union中的每个查询必须包含相同的列、表达式或者聚合函数,他们出现的顺序可以不一致(这里指查询字段相同,表不一定一样)
  3. 列的数据类型必须兼容,兼容的含义是必须是数据库可以隐含的转换他们的类型

image.png

image.png

多表关联

-- union 多表关联
 SELECT
    NAME,
    create_time
FROM
    issue
UNION
SELECT
    employee_name,
    create_time
FROM
    employee_table;

image.png
从上面的检索结果能看出,我们将两个表的数据组合了起来。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;

image.png

包含重复、去除重复

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;

image.png

去重

-- union 多表关联
 SELECT
    NAME
FROM
    issue
UNION
SELECT
    employee_name
FROM
    employee_table;

image.png

最后

以上就是痴情黄蜂为你收集整理的mysql:union 组合查询的全部内容,希望文章能够帮你解决mysql:union 组合查询所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部