继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

mysql执行计划id为空—UNION关键字

蝴蝶不菲
关注TA
已关注
手记 372
粉丝 81
获赞 381

简介

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

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

语法

1 SELECT column_name(s) FROM table_name12 UNION3 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 user112 VALUES13     (14         2,15         20,16         '李四',17         '产品主管'18     );19 20 INSERT INTO user121 VALUES22     (23         3,24         20,25         '王五',26         '运营主管'27     );28 29 INSERT INTO user130 VALUES31     (32         4,33         20,34         '赵六',35         '后勤主管'36     ) INSERT INTO user2 (37         id,38         NAME,39         address,40         phone_number41     )42 VALUES43     (44         1,45         '珍珍',46         '北京',47         '155332211'48     );49 50 INSERT INTO user2 (51     id,52     NAME,53     address,54     phone_number55 )56 VALUES57     (58         2,59         '莲莲',60         '上海',61         '155332211'62     );63 64 INSERT INTO user2 (65     id,66     NAME,67     address,68     phone_number69 )70 VALUES71     (72         3,73         '爱爱',74         '深圳',75         '155332211'76     );

复制代码

INSERT

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

1 -- UNION 语句2 SELECT NAME FROM user13 UNION4 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 user1UNIONSELECT name FROM user2

EXPLAIN UNION

 

  结果如下:

 

 

文章来源:http://www.cnblogs.com/liyasong/


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP