一、问题

  查询用户所有的错题数目到前端展示,要求展示的时候要有错题的编号,从1开始递增。如果删除了第5题,则将后面的题编号均向前挪。

二、分析

  错题是在用户每次做题过程中插入到错题表中的,或者将题目推送表中“错题标识字段”置1,我们没有必要在表中维护一个编号位,因为该编号位除了展示并无其他用途,如果在表中维护的话肯定会造成很多问题。

  使用with as将查询的信息内容查询出并暂存,在后面的查询中会多次用到。

  参考了一些文章,说with as可以将其下标明的信息进行暂存,然后在该sql中的其他位置作为结果集进行引用,这样只进行一次查询。

with b as(
SELECT ( SELECT D .CONTENT_HTML FROM MIC_PAPER_PROBLEMS D WHERE D .tm_id = pm.tm_id ) questionTitle,
( SELECT P .ANSWER_HTML FROM MIC_PAPER_PROBLEMS P WHERE P .TM_ID = pm.tm_id ) rightAns,
pm. ID pushId,
PM.tm_id questionId,
PM.USER_ANSWER yourAnswer
FROM MIC_TD_EXERCISE_PUSH_PROBLEM pm, MIC_TD_EXERCISE_USER_PUSH ph
WHERE pm.push_id = ph. ID AND ph.USER_ID = ? AND ph.SUBJECT_ID = ? and PM.IS_CORRECT = 2
order by PH.PUSH_TIME,PM.CREATE_TIME
)
select rownum seq, b.*
from b
where b.pushId in (select min(b.pushId) from b group by b.QUESTIONID)

这样在oracle将as中的内容查询出来之后,命名为b,然后执行最下面的select查询,其中where条件中的无关子查询是为了保证用户对同一道题的错题只显示一个(比如,题目a,用户答了两次,都答错了,题目表中会记录两条数据,此处只将该题目展示一次即可)。

sql查询结果本身要被使用两次的更多相关文章

  1. sql查询的时候,等于这两个的值得全部取出来

    sql查询的时候  用or连接 ad.jqtype='人文历史' or  ad.jqtype='名胜古迹'

  2. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  3. 浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因

    本文出处:http://www.cnblogs.com/wy123/p/6189100.html 标题有点拗口,来源于一个开发人员遇到的实际问题 先抛出问题:一个查询没有明确指定排序方式,那么,第二次 ...

  4. 提高SQL查询效率(SQL优化)

    要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359   我们要做到不但会写SQL,还要做到 ...

  5. 优化SQL查询:如何写出高性能SQL语句

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...

  6. [转]sql语句中出现笛卡尔乘积 SQL查询入门篇

    本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个 ...

  7. SQL查询性能分析

    http://blog.csdn.net/dba_huangzj/article/details/8300784 SQL查询性能的好坏直接影响到整个数据库的价值,对此,必须郑重对待. SQL Serv ...

  8. hibernate使用原生SQL查询返回结果集的处理

    今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQu ...

  9. 提高SQL查询效率的常用方法

    提高SQL查询效率的常用方法 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driv ...

随机推荐

  1. python:笔记for循环中的else

    我们常常会在for循环遍历一个序列或者字典后,接着语句else,很多新手会误以为是判断执行else后面的 代码,其实不然,for循环里面也不存在判断,而已执行完遍历的对象后,再执行else后面的代码. ...

  2. 关于java的转义字符

    关于java的转义字符 我们都知道  String s="ad,dfjdlfs,df,s,dfl";              执行 String re[]=s.split(&qu ...

  3. iOS Foundation框架简介 -1.常用结构体的用法和输出

    1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...

  4. EF6数据迁移

    当Moldes发生改变时 会提示数据上下文的模型已在数据库创建后发生改变,则需要重建数据库并数据迁移 在NuGet程序包管理控制台输入enable-migrations启用数据迁移 之后会提示&quo ...

  5. 【风马一族_git_github】git的工作流程

    git有三个区域(如图): 基本信息设置 1)设置用户名   git config --global user.name  "帐号名" 2)设置用户名邮箱  git config ...

  6. 用户不在sudoers文件中的解决方法

    1.更改/etc/sudoers权限为777 2.修改文件中 root    ALL=(ALL)       ALL 下方增加 user    ALL=(ALL)       ALL 3.回复文件/e ...

  7. IE8浏览器跨域接口访问异常的解决办法

    IE8版本以下浏览器绝对是一个神奇的存在,忙碌好久,万事具备,居然在ajax调用接口的时候直接爆炸 陈述一下问题 首先是有这样一个接口,请求类型POST,入参JSON,出参JSON,jQuery aj ...

  8. 玄机宝盒v1.6.1.1

    最新版本:玄机宝盒v1.6.1.1 玄机宝盒v1.6.1.1 04-14/2016 给你的将是无与伦比的体验http://bbs.msdn5.com/thread-15-1-1.html(出处: 玄机 ...

  9. Silverlight通过Wcf Data Service访问数据库之ADO.NET Entity Framework篇

  10. jQuery 添加元素和删除元素

    jQuery - 添加元素 append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元 ...