mysql---union的用法
union的作用很简单用来合并两条sql的结果集
语法: SQL1 UNION SQL2
现有一张价格表
文章图片
要求:求出价格低于2000和价格高于3000的商品,不能用or和not between……and
思路:我们可以先求出低于2000的商品得到结果集1
再求出高于3000的商品得到结果集2
再利用union合并结果集1和结果集2
文章图片
什么时候才允许使用union?
答:只要两个结果集的列数相同就可以使用,即使字段类型不相同,也可以使用。
文章图片
第一个结果集有2列,第二个结果集有1列,运行后提示列数不一样的提示。
文章图片
列数相同,但字段类型不同。如goods_name是字符类型而goods_id是整形,但同样可以union。值得注意的是union后字段的名称以第一条SQL为准
【mysql---union的用法】关于union的排序
文章图片
可见内层排序没有发生作用,那现在试试在外层排序
文章图片
可见外层排序发生了作用
那是不是内层排序就没有用了呢,其实换个角度想想内层先排序,外层又排序,明显内层排序显得多余,所以MYSQL优化了SQL语句,不让内层排序起作用。要想内层排序起作用,必须要使内层排序的结果能影响最终的结果。如:加上limit
文章图片
这样内层排序就起作用了
若两次有重复的行出现会怎样?
再创建2个表,
表A
文章图片
表B
文章图片
表A和表B中有两条相同的记录‘王五’,‘小高’
现在使用union看一下结果
文章图片
可以看到‘王五’和‘小高’只有一条记录,所以另一条记录被覆盖了,要想不被覆盖可以使用union all
文章图片
如图所示,‘王五’和‘小高’没有被覆盖
转载于:https://www.cnblogs.com/xiaogua918/p/4181572.html
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量