`
一笑_奈何
  • 浏览: 67034 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

union all与union关键字

阅读更多
    最近我在做电子商务项目里面遇到了一个需求,就是把秒杀与团购的商品一起查询出来。但是由于两个表里面的字段不一样所以秒杀商品与团购商品分来存储的,合并怎么合并了??
    最后我想到oracle里面的关键字union,这个关键字是用来查询并集的,所以我就用了union来把两个表里面数据查询出来,sql如下:

"select A.*\n" +
"  from (\n" + 
"       select A.SECKILL_ID ID,\n" + 
"               A.COMMODITY_ID,\n" + 
"               A.COMMODITY_NAME,\n" + 
"               A.SELL_PRICE,\n" + 
"               A.BUY_USER_CNT,\n" + 
"               A.PRICE,\n" + 
"               A.isTimeEnd,\n" + 
"               A.COUNT,\n" + 
"               A.BRAND_ID,\n" + 
"               1 TYPE,\n" + 
"               discount,\n" + 
"               A.BEGIN_TIME,\n" + 
"               A.CONTENT CONTENT,\n" + 
"               TO_CHAR(discount * 10, '0.99') show_discount\n" + 
"          from (select s.*,\n" + 
"                       sc.BRAND_ID,\n" + 
"                       sc.COMMODITY_NAME,\n" + 
"                       case\n" + 
"                         when begin_time < sysdate and end_time > sysdate then\n" + 
"                          0\n" + 
"                         else\n" + 
"                          1\n" + 
"                       end isTimeEnd,\n" + 
"                       sc.sell_price,\n" + 
"                       nvl(cnt, 0) + nvl(back_count, 0) BUY_USER_CNT,\n" + 
"                       s.price / sc.sell_price discount\n" + 
"                  from seckill s\n" + 
"                  join (select CSC.SORT_ID,\n" + 
"                              C.COMMODITY_ID,\n" + 
"                              C.COMMODITY_NAME,\n" + 
"                              SC.SELL_PRICE,\n" + 
"                              SC.SHOP_COMMODITY_ID,\n" + 
"                              C.BRAND_ID\n" + 
"                         from COMMODITY C\n" + 
"                         join SHOP_COMMODITY SC on C.COMMODITY_ID =\n" + 
"                                                   SC.COMMODITY_ID\n" + 
"                         join COMMODITY_SORT_CONTACT CSC on CSC.COMMODITY_ID =\n" + 
"                                                            C.COMMODITY_ID\n" + 
"                         join (SELECT *\n" + 
"                                FROM sort\n" + 
"                               START WITH SORT_ID = 1\n" + 
"                              connect by P_ID = prior SORT_ID\n" + 
"                                     and STATE = 1) s on S.SORT_ID =\n" + 
"                                                         CSC.SORT_ID\n" + 
"                         join COMMODITY_BRAND CB on C.BRAND_ID = CB.BRAND_ID\n" + 
"                        where S.STATE = 1\n" + 
"                          and SC.STATE = 1\n" + 
"                          and sc.SELL_PRICE > 0\n" + 
"                          and C.STATE = 1\n" + 
"                          and C.IS_SHOW = 1\n" + 
"                          and CB.STATE = 1\n" + 
"                          and SC.SALE_ENABLE_COUNT > 0\n" + 
"                          and SC.SELL_PRICE > 0\n" + 
"                          and (c.IS_SCORE is null or c.IS_SCORE != 1)) sc on sc.commodity_id =\n" + 
"                                                                             s.commodity_id\n" + 
"                  left join (select count(seckill_id) cnt, seckill_id\n" + 
"                              from seckill_order\n" + 
"                             group by seckill_id) o on o.seckill_id =\n" + 
"                                                       s.seckill_id\n" + 
"                 where s.state = 1) A\n" + 
"        union \n" + 
"        select A.GROUP_BUYING_ID ID,\n" + 
"               A.COMMODITY_ID,\n" + 
"               A.COMMODITY_NAME,\n" + 
"               A.SELL_PRICE,\n" + 
"               A.BUY_USER_CNT,\n" + 
"               A.PRICE,\n" + 
"               A.isTimeEnd,\n" + 
"               A.BRAND_ID,\n" + 
"               A.COUNT,\n" + 
"               2 TYPE,\n" + 
"               discount,\n" + 
"               A.BEGIN_TIME,\n" + 
"               A.GROUP_BUYING_TEXT CONTENT,\n" + 
"               TO_CHAR(discount * 10, '0.99') show_discount\n" + 
"          from (select group_buying_text CONTENT,\n" + 
"                       group_buying_price price,\n" + 
"                       s.*,\n" + 
"                       sc.BRAND_ID,\n" + 
"                       sc.COMMODITY_NAME,\n" + 
"                       case\n" + 
"                         when begin_time < sysdate and end_time > sysdate then\n" + 
"                          0\n" + 
"                         else\n" + 
"                          1\n" + 
"                       end isTimeEnd,\n" + 
"                       sc.sell_price,\n" + 
"                       nvl(cnt, 0) + nvl(back_count, 0) BUY_USER_CNT,\n" + 
"                       s.group_buying_price / sc.sell_price discount\n" + 
"                  from group_buying s\n" + 
"                  join (select CSC.SORT_ID,\n" + 
"                              C.COMMODITY_ID,\n" + 
"                              C.COMMODITY_NAME,\n" + 
"                              SC.SELL_PRICE,\n" + 
"                              SC.SHOP_COMMODITY_ID,\n" + 
"                              C.BRAND_ID\n" + 
"                         from COMMODITY C\n" + 
"                         join SHOP_COMMODITY SC on C.COMMODITY_ID =\n" + 
"                                                   SC.COMMODITY_ID\n" + 
"                         join COMMODITY_SORT_CONTACT CSC on CSC.COMMODITY_ID =\n" + 
"                                                            C.COMMODITY_ID\n" + 
"                         join (SELECT *\n" + 
"                                FROM sort\n" + 
"                               START WITH SORT_ID = 1\n" + 
"                              connect by P_ID = prior SORT_ID\n" + 
"                                     and STATE = 1) s on S.SORT_ID =\n" + 
"                                                         CSC.SORT_ID\n" + 
"                         join COMMODITY_BRAND CB on C.BRAND_ID = CB.BRAND_ID\n" + 
"                        where S.STATE = 1\n" + 
"                          and SC.STATE = 1\n" + 
"                          and sc.SELL_PRICE > 0\n" + 
"                          and C.STATE = 1\n" + 
"                          and C.IS_SHOW = 1\n" + 
"                          and CB.STATE = 1\n" + 
"                          and SC.SALE_ENABLE_COUNT > 0\n" + 
"                          and SC.SELL_PRICE > 0\n" + 
"                          and (c.IS_SCORE is null or c.IS_SCORE != 1)) sc on sc.commodity_id =\n" + 
"                                                                             s.commodity_id\n" + 
"                  left join (select count(group_buying_id) cnt,\n" + 
"                                   group_buying_id\n" + 
"                              from (select MEMBER_ID, group_buying_id\n" + 
"                                      from GROUP_BUYING_MEMBER\n" + 
"                                     where state != 2\n" + 
"                                     group by group_buying_id, member_id)\n" + 
"                             group by group_buying_id) o on o.group_buying_id =\n" + 
"                                                            s.group_buying_id\n" + 
"                 where s.state = 1) A) A\n" + 
" order by BEGIN_TIME desc, type asc, ID DESC\n" + 
"\n" + 
"";
,但是我在执行之后老是报orc-000932异常,数据类型不一致。于是我就想是不是我要查询的字段是不是有类型问题,我一个个的对比发现没有问题。然后我在网上找了一下问题,原来是union关键字会会对结果集里面的商品数据进行帅选,把union换成union all就可以解决这个问题了.
分享到:
评论

相关推荐

    MySQL中UNION与UNION ALL的基本使用方法

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算...

    浅析mysql union和union all

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算...

    Oracle中Union与Union All的区别(适用多个数据库)

    如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来

    MySQL Union合并查询数据及表别名、字段别名用法分析

    union关键字 SELECT s_id, f_name, f_price FROM fruits WHERE f_price &lt; 9.0 UNION ALL SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103); 为表取别名 SELECT * from orders AS o WHERE o.o...

    MySQL利用UNION连接2个查询排序失效详解

    UNION ALL 连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录 今天在接到一个需求的时候使用了UNION进行查询后发现,如果两个查询分别使用ORDER BY后拼接居然无法成功排序,经过了好一番折腾...

    SQLSERVER中union,cube,rollup,cumpute运算符使用说明

    /* –1 UNION 运算符是...如果使用all关键字,那么结果集将包含所有行并且不删除重复行 c.sql是从左到右对包含UNION 运算符的语句进行取值,使用括号可以改变求值顺序 –例如: */ select * from tablea union all ( sel

    Sql 语句详解

    20. SQL UNION 和 UNION ALL 操作符 26 21. SQL SELECT INTO 语句 28 22. SQL CREATE DATABASE 语句 29 23. SQL CREATE TABLE 语句 29 24. SQL 约束 (Constraints) 30 25. SQL NOT NULL 约束 31 ……

    五、MySQL联合查询学习笔记(详解)

    3、union关键字默认会自动去重,如果使用union all 可以包含重复项 # 联合查询 # union 联合 合并:将多条查询语句的结果合并成一个结果 # 语法: # 查询语句1 # UNION # 查询语句2 # UNION # .

    oracle 合并查询 事务 sql函数小知识学习

    表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉。 代码如下: select ename,sal,job from emp where sal &gt; 2500 union select ename,sal,job from emp where job = ‘MANAGER’; 而union all用法和...

    Hive使用手册Hive使用手册

    目录 1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 3 Hive创建/删除数据库 3 ...11 UNION ALL 6 12 Hive使用注意点: 6 13 Hive优化 9

    18道经典 MySQL 面试题.txt

    11、UNION和UNION ALL的区别?12、关心过业务系统里面的sql耗时吗?对慢查询都怎么优化过?13、主键使用自增ID还是UUID,为什么?14、MySQL数据库cpu飙升的话,要怎么处理呢?15、什么是存储过程?有哪些优缺点?16...

    专高2_练习手册_高性能架构_第19单元1

    1. (判断)大数据专业高级2-16.0课程19单元:mysql中,union中ALL关键字的作用是在结果集中所有行全部列出,不管是否有重复行 2. (判断)大

    SQL2005入门到精通(8)

    154 8.6 用TRUNCATE TABLE语句删除记录 154 8.6.1 TRUNCATE TABLE语句的语法 155 8.6.2 使用TRUNCATE TABLE删除表中数据 155 8.7 使用联合 156 8.7.1 UNION关键字的语法 156 8.7.2 使用UNION将两...

    数据库作业(第二周复习题)详解

    C项 在select后加入关键字all表示不去重(默认) D项 限制返回结果集中的记录条数 2 当你执行以下查询语句: SELECT sno,sname FROM student WHERE sdept =’计算机科学’ OR sdept =’信息管理’; 在WHERE语句中,...

    详解SQL注入–安全(二)

    如果此文章有什么错误,或者您有什么建议,欢迎随时联系我...常见的关键字:and、or、union all select、引号、空格等等过滤 还有一些类似的技术不是过滤而是通过转义函数或者剥离非法关键字 绕过方法: 1、大小写变形

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同。使用OR关键字时,只要满足这几个查询条件的其中一个,这样的记录将会被查询出来。如果不满足这些查询条件中的任何一个,这样的记录将被排除掉。OR...

    精通SQL 结构化查询语言详解

    9.4 UNION与UNION JOIN  9.4.1 关系的集合运算  9.4.2 UNION运算符  9.4.3 ORDER BY子句排序UNION运算结果  9.4.4 对多表进行UNION运算  9.4.5 UNION JOIN 连接表  9.5 表连接的其他应用及注意问题  ...

    精通SQL--结构化查询语言详解

    9.4 union与union join 177 9.4.1 关系的集合运算 177 9.4.2 union运算符 178 9.4.3 order by子句排序union运算结果 180 9.4.4 对多表进行union运算 181 9.4.5 union join 连接表 183 9.5 表连接的其他应用及...

    SQLServer2005考试题及答案

    ⑵ A、DISTINCT B、UNION C、ALL D、TOP ⑶ A、JOIN B、UNION C、INTO D、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 5、语句DBCC SHRINKDATABASE (Sample, 25)中的25表示的意思是 A、25M B、剩余...

    精通sql结构化查询语句

    9.6.3 UNION集合运算与多表连接应用 9.7 小结第10章 子查询 10.1 子查询的简单应用 10.1.1 子查询概述 10.1.2 在多表查询中使用子查询 10.1.3 在子查询中使用聚合函数 10.1.4 使用ANY或ALL运算符 10.1.5 使用子查询...

Global site tag (gtag.js) - Google Analytics