zoukankan      html  css  js  c++  java
  • mysql执行计划id为空—UNION关键字

    简介

      UNION 操作符用于合并两个或多个 SELECT 语句的结果集。例如,我有两个表,表1记录的是公司男员工的数据,包括年龄、姓名、职位。表2记录的是公司女员工的数据,包括姓名、家庭住址、手机号等字段。这时,我们想要根据一定条件,查询两个表的姓名的集合。就会用到 UNION 关键字。

      UNION 可以查询多个字段,不过 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

    语法

    1 SELECT column_name(s) FROM table_name1
    2 UNION
    3 SELECT column_name(s) FROM table_name2

      UNION 操作符会对结果集进行去重。如果允许重复值,可以用 UNION ALL 两者除去重功能外,没有其他区别。

    实例

      这里的实例,就以简介里的介绍为需求,建立两个表格,并且进行相应的操作。

      首先,建立user1,user2 两个表格,建表语句如下:

     1 -- 建表语句
     2 CREATE TABLE user1 (
     3     id INT,
     4     age INT,
     5     NAME VARCHAR (5),
     6     position VARCHAR (8)
     7 );
     8 CREATE TABLE user2 (
     9     id INT,
    10     name VARCHAR(5),
    11     address VARCHAR(50),
    12     phone_number VARCHAR(20)
    13 )
    CREATE TABLE

      其次,插入对应数据,sql如下:

     1 -- 数据插入语句
     2 INSERT INTO user1
     3 VALUES
     4     (
     5         1,
     6         20,
     7         '张三',
     8         '技术主管'
     9     );
    10 
    11 INSERT INTO user1
    12 VALUES
    13     (
    14         2,
    15         20,
    16         '李四',
    17         '产品主管'
    18     );
    19 
    20 INSERT INTO user1
    21 VALUES
    22     (
    23         3,
    24         20,
    25         '王五',
    26         '运营主管'
    27     );
    28 
    29 INSERT INTO user1
    30 VALUES
    31     (
    32         4,
    33         20,
    34         '赵六',
    35         '后勤主管'
    36     ) INSERT INTO user2 (
    37         id,
    38         NAME,
    39         address,
    40         phone_number
    41     )
    42 VALUES
    43     (
    44         1,
    45         '珍珍',
    46         '北京',
    47         '155332211'
    48     );
    49 
    50 INSERT INTO user2 (
    51     id,
    52     NAME,
    53     address,
    54     phone_number
    55 )
    56 VALUES
    57     (
    58         2,
    59         '莲莲',
    60         '上海',
    61         '155332211'
    62     );
    63 
    64 INSERT INTO user2 (
    65     id,
    66     NAME,
    67     address,
    68     phone_number
    69 )
    70 VALUES
    71     (
    72         3,
    73         '爱爱',
    74         '深圳',
    75         '155332211'
    76     );
    INSERT

      最后,运行UNION语句,进行查询

    1 -- UNION 语句
    2 SELECT NAME FROM user1
    3 UNION
    4 SELECT name FROM user2
    UNION

      代码执行后,得到结果如下:

      

      这里的结果集中的列名为UNION语句的第一个select语句的列名(user1 为NAME ,user2 为name)。

    explain的时候,id为null

      在执行UNION的执行计划的时候,最后一个合并结果集的操作的执行id为null。而且,第一个执行的select_type为简单查询,第二个及以后的查询为UNION,最后合并时的select_type为UNION RESULT。

      执行计划代码如下:

    EXPLAIN SELECT NAME FROM user1
    UNION
    SELECT name FROM user2
    EXPLAIN UNION

      结果如下:

  • 相关阅读:
    javascript命名空间的简单实现
    javascript变量的作用域
    Python单元测试框架
    opencv中遍历图片数据的两种方法
    hsv 与 hsi 颜色空间
    OpenCV资料
    Linux下查看文件和文件夹大小
    The run destination iPhone 5.0 Simulator is not valid for running the scheme 'MyApp'
    OpenCV函数学习之cvLUT
    Linux中find常见用法示例
  • 原文地址:https://www.cnblogs.com/liyasong/p/mysql_UNION.html
Copyright © 2011-2022 走看看