Mysql 的 Union 语法 及 面试题
来源:互联网 发布:软件摊销年限 税法 编辑:程序博客网 时间:2024/05/22 04:42
Union: 联合
作用: 把2次或多次查询结果合并起来
要求: 两次查询的列数一致
推荐; 查询的每一列,相对应的列类型也一样.
可以来自于多张表
多次sql语句取出的列名可以不一致,此时,以第1个sql的列名为准
如果不同的语句中取出的行, 有完全相同(每个列的值都相同),
那么相同的行将会合并.(去重复)
如果不去重复,可以加all来指定
如果子句中有order by ,limit, 须加(), 推荐放到 所有子句之后,即--对最终合并后的结果来排序.
在子句中, order by 配合limit使用才有意义, 如果order by 不配合limit使用, 会被语法分析器优化分析时,去除.
从两个不同的表选取字段 :
1:字段数一定要相等 不然怎么合并??
2:就算字段类型不一样 也可以合并 不会丢失数据 乱码什么的 因为它就是一个结果集 取出来了 而丢失数据 乱码 只是对应的 插入数据时所说的~!~
子句里面不能用order by 为什么呢?
因为 里面排了 最后的结果集又能达到一样的效果来排序 譬如 要按cat_id shop_price 来排序 在里面排了 浪费资源
因为在最后的结果集也可以排 order by cat_id desc,shop_price asc 效果是一样的
但是order by 里面有LIMIT D 的话能正常使用!!
为什么呢?
因为这个limit 能确实影响到结果集 因为limit了 就是结果集会限制了条数 所以是有效的
面试题:
由于Union 在合并的时候 如果出现完全一样的行 会被覆盖
所以这样合并 两个C就变成了一个 所以
这这里要用union all 不会合并
思路:只要合并以后 再按group by id 然后打印sum(num) 就OK了!
思考:能用左链接吗??
答:好像不能
出现问题
1:a 没有对应的a 用null 补齐 但是5+null =null 不能得到5;
2:由于左链接按a表为基础 没有e;
3:由于只有inner join 求交集 而没有outer join 就并集 但能用union 代替 就体现在这里了
左链接 Union 右连接 在用了ifnull(ex1,ex2) 如果不为null 则取ex1 为null 则取 ex2
- Mysql 的 Union 语法 及 面试题
- MYSQL 你知道mysql中union的语法么?
- 阿里巴巴MySQL DBA面试题及答案
- MYSQL常见面试题及基础知识点
- 一道MySQL的面试题
- MySQL常用的面试题
- MySQL常用的面试题
- MySQL常用的面试题
- mysql常见的面试题
- mysql(9):基础,UNION子句的语法介绍
- 黑马程序员_String类常用语法及面试题
- JAVA基础及语法部分面试题(1)
- JAVA基础及语法部分面试题(2)
- JAVA基础及语法部分面试题(3)
- JAVA基础及语法部分面试题(4)
- JAVA基础及语法部分面试题(5)-----异常部分
- mysql---union和左连接的两倒面试题
- struct/class/union内存对齐原则及面试题实例分析
- HBase关键算法 / 流程
- Ubuntu触摸板不能用的解决办法
- 二叉树遍历(包括先序创建二叉树,递归非递归三种遍历)源码
- [开发工具] 史上最全系列之开发环境搭建之NDK
- PHP 图片 保持高宽不变压缩之后imagejpeg($source,$file,100) 仍旧失真!
- Mysql 的 Union 语法 及 面试题
- 如何才可能写出高效的sql语句
- SoundPool与MediaPlayer使用
- Android控件的选择
- 未处理的异常:0xC0000005: 读取位置 0xfeeefeee 时访问冲突
- Innodb锁机制
- sublime text 2 使用介绍
- ArcGIS FlexViewer
- Openstack 资料