union的用法

union的用法
union用来连接两个查询语句,把两个查询语句的查询结果合并起来,两个查询语句的查询字段个数必须一样,否则会出错,查询的字段可以不一样,类型也可以不一样,但是这样查询的意义不大,如果查询的字段不一样,最终的结果集以前者查询的字段为准。如果用union进行连接,碰到所有字段值一样的列,就会合并,去掉重复的行,如果用union all进行连接,则不会去掉重复的内容,所有的内容都被取出。

mysql> (select goods_id,goods_name,cat_id from goods where cat_id=2 order by goo
ds_id asc)
    -> union (select goods_id,goods_name,cat_id from goods where cat_id=4 order
by goods_id desc);
+----------+--------------+--------+
| goods_id | goods_name   | cat_id |
+----------+--------------+--------+
|       16 | 恒基伟业G101       |      2 |
|        1 | KD876        |      4 |
|       14 | 诺基亚5800XM      |      4 |
|       18 | 夏新T5           |      4 |
+----------+--------------+--------+
4 rows in set (0.00 sec)
#在每个查询语句中进行排序,再进行连接,其中的排序就没有意义,所以mysql回把排序的语句进行优化掉

mysql> select goods_id,cat_id,goods_name from goods where cat_id=2
    -> union
    -> select goods_id,cat_id,goods_name from goods where cat_id=4
    -> order by goods_id;
+----------+--------+--------------+
| goods_id | cat_id | goods_name   |
+----------+--------+--------------+
|        1 |      4 | KD876        |
|       14 |      4 | 诺基亚5800XM      |
|       16 |      2 | 恒基伟业G101       |
|       18 |      4 | 夏新T5           |
+----------+--------+--------------+
4 rows in set (0.00 sec)

mysql> #排序放在最后是针对最后的结果集进行排序,有意义,

mysql> (select goods_id,cat_id,goods_name from goods where cat_id=3 order by goo
ds_id limit 3)
    -> union
    -> (select goods_id,cat_id,goods_name from goods where cat_id=4 order by goo
ds_id limit 2)
    -> ;
+----------+--------+--------------+
| goods_id | cat_id | goods_name   |
+----------+--------+--------------+
|        8 |      3 | 飞利浦[email protected]         |
|        9 |      3 | 诺基亚E66         |
|       10 |      3 | 索爱C702c        |
|        1 |      4 | KD876        |
|       14 |      4 | 诺基亚5800XM      |
+----------+--------+--------------+
5 rows in set (0.05 sec)

#这次排序影响的最终的显示结果有意义,所以order by 起了作用

一道面试题
mysql> create table a (
    -> id char(1),
    -> num int
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.12 sec)

mysql> insert into a values (‘a‘,5),(‘b‘,10),(‘c‘,15),(‘d‘,10);
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> create table b (
    -> id char(1),
    -> num int
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.04 sec)

mysql>
mysql> insert into b values (‘b‘,5),(‘c‘,15),(‘d‘,20),(‘e‘,99);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

#将两张表合并,相同id的num相加
mysql> select id,sum(num) from (select * from a union all select * from b) as temp group by id;
+------+----------+
| id   | sum(num) |
+------+----------+
| a    |        5 |
| b    |       15 |
| c    |       30 |
| d    |       30 |
| e    |       99 |
+------+----------+
5 rows in set (0.05 sec)
#将两张表用union all合并,然后再按照id分组,求和,达到最终的目的
时间: 2024-10-24 16:07:24

union的用法的相关文章

从Java到C++——union的用法

你是否记得union这个东西,在上大学的时候我们用的是潭浩强的<C语言程序设计>,里面把它译作是共用体."共用体",虽然翻译得特别别扭,但却正好说明了它的特性和用途. 联合(union,也有翻译成共用体的)是一种特殊的结构(或说类).一个union可以有多个数据成员,但是在任意时刻只有一个成员有值.Union具有以下几个特点: 1.一个union可以有多个不同类型的数据成员, 但在某一时刻只有一个成员有值(即只有一个成员是有效的). 给union的某个成员赋值后,该unio

mysql中UNION ALL用法

MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 union select * from table2 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序. MySQL中的UNION ALL UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集

SQL Union和SQL Union All用法

SQL Union和SQL Union All用法SQL Union和SQL Union All用法SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. SQL UNION 语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s)

Oracle 中union的用法

UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果. 例如: SELECT Date FROM Store_Information UNION SELECT Date FROM Internet_Sales 注意:union用法中,两个select语句的字段类型匹配,而且字段个数要相同,如上面的例子,在实际的软件开发过程,会遇到更复杂的情况,具体请看下面的例子 select  '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_P

union和union all用法

工作中,遇到同事之前写的oracle语句中有一个union all,并且很多地方都用到了.便在网上查了一下用法,一下是自己的理解. union  (联合)将两个或者多个结果集合并. 在使用时,两个结果集要有相同的列,并且字段类型需要一致. select id,name from tableAunion allselect name from tableB 消息 205,级别 16,状态 1,第 1 行使用 UNION.INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有

SQL中MINUS的用法与UNION的用法

一:MINUS指令 其是运用在两个 SQL 语句上.它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL语句的结果中.如果有的话,那第一个SQL结果数据就被去除,而不会在最后的结果中出现.如果第一个 SQL 语句所产生的结果并没有存在于第二个 SQL 语句所产生的结果内,那第一个SQL结果数据就被保留,会在最后的结果中出现.MINUS 的语法如下:[SQL 语句 1]MINUS[SQL 语句 2]举例:Store_Information 表格store_name  Sa

sql语句查询结果合并union all用法_数据库技巧

--合并重复行 select * from A union select * from B --不合并重复行 select * from A union all select * from B 按某个字段排序 --合并重复行 select * from ( select * from A union select * from B) AS T order by 字段名 --不合并重复行 select * from ( select * from A union all select * from

转 SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题

SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题 SQL Union和SQL Union All用法 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. SQL UNION 语法 SELECT column_name(s) FROM tab

UNION和UNION ALL

UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行.UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. SQL UNION 语法: SELECT column_name FROM table1UNIONSELECT column_name FROM table2 注释:默认地,UNION 操作符选取不同的值.如果允许重复的值,请使用 UNION ALL.当 ALL 随 UNIO