- 浏览: 68863 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
乒乓狂魔:
错了,是这个地址 http://lgbolgger.iteye ...
springMVC 解决GET乱码 -
乒乓狂魔:
楼主可以参考这篇文章 http://lgbolgger.it ...
springMVC 解决GET乱码
最近我在做电子商务项目里面遇到了一个需求,就是把秒杀与团购的商品一起查询出来。但是由于两个表里面的字段不一样所以秒杀商品与团购商品分来存储的,合并怎么合并了??
最后我想到oracle里面的关键字union,这个关键字是用来查询并集的,所以我就用了union来把两个表里面数据查询出来,sql如下:
最后我想到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就可以解决这个问题了.
发表评论
-
oracle11 导出空表
2015-04-28 14:42 58011G中有个新特性,当表 ... -
ORA-01940:无法删除当前已链接的用户(转)
2015-04-28 12:10 875(1)查看用户的连接状况 select username,s ... -
oracle的几个排序函数 ROW_NUMBER()/DENSE_RANK()/RANK()
2015-03-16 15:16 873今天看到有位同事的sql中使用了“RANK() over pa ... -
oracle ORA-01722无效数字
2015-02-15 15:02 530我有一个表table_a 里面有一个字段field中保 ... -
oracle匿名登录
2014-05-28 14:17 721最近再一个项目里面出现了这样的情况,就是该数据库系统下面的 ... -
oracle触发器
2014-04-10 11:03 566变异表是指激发触发器 ... -
ORACLE 触发器
2014-03-22 10:27 637本篇主要内容如下: 8.1 触发器类型 8.1.1 DML ... -
Oracle ORA-3137[12333] 关闭的连接 java.sql.SQLRecoverableException: 无法从套接字读取更多的数据
2014-02-28 12:52 8513今天在项目中遇到一个异常:Oracle ORA-313 ... -
ORACLE IN与exists区别
2013-10-08 12:49 607EXISTS的执行流程 select * from ...
相关推荐
**UNION** 和 **UNION ALL** 是 SQL 语言中用于合并两个或多个 SELECT 语句结果集的关键字。这两种操作符都可以帮助我们创建一个单一的结果集,但是它们在处理重复数据的方式上有所不同。 ##### 1. UNION - **定义*...
在SQL Server中,`UNION`和`UNION ALL`是两种用于合并多个SELECT语句结果集的关键字,它们在数据库查询中起着至关重要的作用。理解这两种操作符的使用方法可以帮助你更有效地构建和优化SQL查询。 首先,`UNION`操作...
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算...
在MySQL数据库中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的关键字,它们在处理数据时具有不同的特性和性能影响。 首先,`UNION` 关键字用于合并两个或更多 `SELECT` 查询的结果,并且会自动去除重复...
如果需要包含重复的行,可以使用`UNION ALL`替代,这样不会进行去重操作。 `UNION`操作符的语法结构如下: ```sql SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 ``` 在...
#### 三、UNION与UNION ALL的区别 - **UNION**:默认去除重复行。 - **UNION ALL**:保留所有行,包括重复行。 #### 四、UNION的实际应用示例 假设我们有两个表格:`Store_Information`和`Geography`,以及一个...
union关键字 SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 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...
如果使用 `UNION ALL` 关键字,将保留重复记录。 三、SQL Union 并集运算使用场景 SQL Union 并集运算常用于以下场景: 1. 合并多个查询结果:使用 Union 并集运算可以将多个查询结果结合在一起,生成一个完整的...
- **基本UNION语法**:如何构建简单的UNION查询,包括SELECT语句的结构和UNION关键字的位置。 - **使用UNION ALL**:什么时候使用UNION ALL,以及它与UNION的区别。 - **处理不同列数或类型**:如果两个SELECT语句...
如果查询中包含子查询或者UNION语句,那么每个SELECT关键字都会有一个唯一的id值。 例如,当查询中包含子查询时: ```sql mysql> explain select * from (select * from t1 where id=1) as subquery; ``` 输出...
9. UNION/UNION ALL:用于合并多个SELECT语句的结果,UNION会去除重复行,UNION ALL则保留所有行。 10. ORDER BY:对结果集进行排序。 11. LIMIT:最后,LIMIT用于获取指定数量的记录,常用于分页查询。 关于执行...
`UNION` 关键字的主要目的是去除重复的行,使得最终的结果集中不包含重复记录。然而,如果你需要保留所有数据,包括重复的行,你可以使用 `UNION ALL`。 ### UNION 的基本语法 `UNION` 基本语法如下: ```sql ...
SELECT 'A' AS PY, N'' AS word UNION ALL SELECT 'B', N'' UNION ALL SELECT 'C', N'e' UNION ALL SELECT 'D', N'z' UNION ALL SELECT 'E', N'' UNION ALL SELECT 'F', N'v' UNION ALL SELECT 'G', N'B' ...
UNION 与 UNION ALL 的概念 - **UNION**:用于合并两个或多个`SELECT`语句的结果集。使用`UNION`时,结果集中只会包含唯一的行,即会自动去除重复的数据。 - **UNION ALL**:同样用于合并两个或多个`SELECT`语句的...
- `UNION ALL`: 合并两个查询结果,保留所有行,包括重复行。 - `EXCEPT`: 返回只在第一个查询中出现的行,去除重复行。 - `EXCEPT ALL`: 返回只在第一个查询中出现的所有行,包括重复行。 - `INTERSECT`: 返回...
- `UNION ALL`用于合并多条`SELECT`语句的结果集,并包含所有记录(包括重复记录)。 ### 2. 数据聚合查询 **题目描述:** 查询表`A`中的所有列,同时从表`B`中获取`content`对应的`ismember`的总和,并按`content...