博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中的union用法以及子查询综合应用
阅读量:4940 次
发布时间:2019-06-11

本文共 1737 字,大约阅读时间需要 5 分钟。

union查询就是把2条或者多条sql语句的查询结果,合并成一个结果集。

如:sql1: N行,sql2: M行,sql1 union sql2 ---> N+M行

1、能否从2张表查询再union呢?

可以,union 合并的是"结果集",不区分在自于哪一张表.

2、取自于2张表,通过"别名"让2个结果集的列一致。那么,如果取出的结果集,列名字不一样,还能否union.

可以,而且取出的最终列名,以第1条sql为准

3、union满足什么条件就可以用了?

只要结果集中的列数一致就可以.(如都是2列或者N列)

4、union后结果集,可否再排序呢?

可以的。Sql1 union sql2 order by 字段

注意: order by 是针对合并后的结果集排的序.

5、如果Union后的结果有重复(即某2行,或N行,所有的列,值都一样),怎么办?

这种情况是比较常见的,默认会去重.

6、如果不想去重怎么办?

union all

 

下面通过实例来验证union的常用特性以及应用:

CREATE TABLE num_a (    id VARCHAR( 3 ) NOT NULL,    num INT(3 ) UNSIGNED NOT NULL)CHARSET utf8 ENGINE MYISAM;CREATE TABLE num_b (    id VARCHAR( 3 ) NOT NULL,    num INT(3 ) UNSIGNED NOT NULL)CHARSET utf8 ENGINE MYISAM;INSERT INTO num_a VALUES ( 'a', 5 );INSERT INTO num_a VALUES ( 'b', 10 );INSERT INTO num_a VALUES ( 'c', 15 );INSERT INTO num_a VALUES ( 'd', 10 );INSERT INTO num_b VALUES ( 'b', 5 );INSERT INTO num_b VALUES ( 'c', 15 );INSERT INTO num_b VALUES ( 'd', 20 );INSERT INTO num_b VALUES ( 'e', 99 );

     

 

 1,union会去掉重复的行

SELECT id,num FROM num_a UNION SELECT id, num FROM num_b

 

2、order by对union后的结果集排序

SELECT id,num FROM num_a UNION SELECT id, num FROM num_b ORDER BY num DESC

 

3、UNION ALL不会过滤重复的行

SELECT id,num FROM num_a UNION ALL SELECT id, num FROM num_b

 

4、把num_a和num_b不同的索引结果保留, 相同的索引结果相加  然后输出:

SELECT a.id, ( a.num + b.num ) AS num FROM num_a AS a INNER JOIN num_b AS b ON a.id = b.idUNION ALLSELECT * FROM num_a AS a WHERE NOT EXISTS( SELECT * FROM num_b AS b WHERE a.id = b.id )UNION ALLSELECT * FROM num_b AS b WHERE NOT EXISTS( SELECT * FROM num_a AS a WHERE a.id = b.id )ORDER BY id ASC

 

  

5、第二种方法用子查询分组统计,也可以达到同样的效果

SELECT id, SUM( num ) AS num FROM ( SELECT * FROM num_a a UNION ALL SELECT * FROM num_b b ) tmpGROUP BY id;

 

转载于:https://www.cnblogs.com/ghostwu/p/8544333.html

你可能感兴趣的文章
.Net Core Identity外面使用Cookie中间件
查看>>
【坐在马桶上看算法】算法1:最快最简单的排序——桶排序
查看>>
C#中泛型之Dictionary
查看>>
强连通分量
查看>>
使用Code First模式开发如何更新数据库(转载)
查看>>
sqoop导出工具
查看>>
Codeforces Round #376 (Div. 2)
查看>>
Codeforces 607D Power Tree 线段树 (看题解)
查看>>
写在人生的路上——2016年上半年总结
查看>>
员工选票系统-java
查看>>
C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:...
查看>>
sp1.3-1.4 Neural Networks and Deep Learning
查看>>
JavaScript易错知识点整理
查看>>
Biological Clocks
查看>>
2018-10-11
查看>>
国内NLP的那些人那些会
查看>>
SQL 将一个表中的所有记录插入到一个临时表中
查看>>
nmea协议
查看>>
js 中对象的特性
查看>>
hdoj3714【三分】
查看>>