码迷,mamicode.com
首页 > 数据库 > 详细

mysql union 详解

时间:2014-06-27 21:07:52      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   com   使用   art   

Union:
作用:把2次或多次查询结果合并起来
要求:两次查询的列数一致
推荐:查询的每一列,相对应的列类型也一样


可以来自于多张表

多次sql语句取出的列名可以不一致,此时,以第1个sql的列名为准

例一、

select user_name,user_email,msg_content from ecs_feedback where msg_status = 1 union select user_name,email,content from ecs_comment where status = 1;

bubuko.com,布布扣

如果不同的语句中取出的行,有完全相同(每个列的值都相同),那么相同的行将会合并(去重复)
如果不去重复,可以加all来指点
如果子句中有order by,limit,必须加()把句子括起来    order by推荐放到所有子句之后,即--对最终合并后的结果来排序
例:

例二、

(select  goods_id,cat_id,goods_name,shop_price from goods where cat_id=4) union (select goods_id,cat_id,goods_name,shop_price from goods where cat_id=5) order by shop_price desc;

 

bubuko.com,布布扣

例三、

(select  goods_id,cat_id,goods_name,shop_price from goods where cat_id=4 order by shop_price desc) union (select goods_id,cat_id,goods_name,shop_price from goods where cat_id=5 order by shop_price desc);

 

bubuko.com,布布扣

此时看图可以看出并没有实现排序  但是不会报错,所以说在自己中order by要想正常使用必须配合limit  这样才能实现排序  如果order by不配合limit使用,会被语法分析器优化分析时去掉

例四:

(select goods_id,cat_id,goods_name,shop_price from goods where cat_id=3 order by shop_price desc limit 3) union (select goods_id,cat_id,goods_name,shop_price from goods where cat_id=4 order by shop_price desc limit 2);

bubuko.com,布布扣

可见此时order by起作用

原文地址:http://blog.csdn.net/huangjianxiang1875/article/details/7876153

mysql union 详解,布布扣,bubuko.com

mysql union 详解

标签:des   blog   http   com   使用   art   

原文地址:http://www.cnblogs.com/LoveJulin/p/3807617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!