sql随机查询数据
2016-05-11 22:05
351 查看
随机查询数据
在数据库方面我是一个新人,今天老大让我去修改一个随机抽奖的BUG,我看了一下测试人员提交的BUG内容,
原本以为很简单,仔细检查了一下同事写的代码,最后发现是抽奖逻辑有问题,没办法了我就全部只能重写代码了,
但由于我在sql这方面实在薄弱的原因还是整整的弄了一天的时间才修复BUG。在今天的BUG任务中我遇到很多很多
我想将所有遇到的问题全部记录下来,[b]但我们老大说要走了,公司只有我和老大两个人,现在已经是晚上21半了,所[/b]
以没办法记录今天的全部问题了,下面就简单的说一下我今天遇到的一个问题吧!
题:通过随机数查询 ID 并设置状态( 0:待审核 1: 认证不通过 2:认证通过 3:以中奖 4:未中间 )
1、数据表ID是主键,标示增量是 1这样就不能通过ID查询了,注:删除某条后ID则不是连续的了
2、如何找到通过随机数找到ID
3、什么样的sql语句才是正确的
针对以上3个问题作为我一个新手来说都是很头痛的,看一开始写的SQL语句是如下这样的:
select top 1 * from DSN_WeChatCustomer where status =2 and ID not in( select top 6506 ID from
DSN_WeChatCustomer where status =2 order by updateTime asc )
针对上面这个SQL语句查询出来的结果我一开始以为是正确的,最后将代码修改完整后准备提交了,我们老大说来
看看,我自信满满的说来吧!绝对没有任何问题,我们老大检查了一下我的代码,最后发现我上面写的SQL语句有
问题,老大就给我讲了一下如何实现并且帮我修正了SQL还给我讲解了为什么、错在哪里,修改代码如下:
select top 1 *
from ( select top 1000 * from DSN_WeChatCustomer where status =2 order by updateTime asc ) as a
where a.status =2
order by a.updateTime desc
修改代码后结果肯定是正确的,其实我有个问题不懂,在我所知道的是 from 后面只能跟 “表名” 为什么能在后面
跟查询语句了,老大说用 AS 转了啊,我还是有些不明白,老大说其实 from 后面 只要是一个数据集合就可以,老
大这么一说我才有点明白,突然发现自己的懂得太少了,SQL语句修改完成后老大就走开了,走开一半的时候老大
突然停下对我说了一句 以后少用 “ not in” 它的查询速度非常慢,就这样我又长知识了,感谢我的老大,我说老大
有什么这方面的书没介绍我看一下,说没有,他说帮我找一下,用公司的经费给我买几本, 容我介绍一下我的老大:
姓名:钱春源
性别:男
身高:183
个性:开朗
开发资历:10年
崇拜我的老大啊!!!!!!!!!!!!!!!!!!!!!!
在数据库方面我是一个新人,今天老大让我去修改一个随机抽奖的BUG,我看了一下测试人员提交的BUG内容,
原本以为很简单,仔细检查了一下同事写的代码,最后发现是抽奖逻辑有问题,没办法了我就全部只能重写代码了,
但由于我在sql这方面实在薄弱的原因还是整整的弄了一天的时间才修复BUG。在今天的BUG任务中我遇到很多很多
我想将所有遇到的问题全部记录下来,[b]但我们老大说要走了,公司只有我和老大两个人,现在已经是晚上21半了,所[/b]
以没办法记录今天的全部问题了,下面就简单的说一下我今天遇到的一个问题吧!
题:通过随机数查询 ID 并设置状态( 0:待审核 1: 认证不通过 2:认证通过 3:以中奖 4:未中间 )
1、数据表ID是主键,标示增量是 1这样就不能通过ID查询了,注:删除某条后ID则不是连续的了
2、如何找到通过随机数找到ID
3、什么样的sql语句才是正确的
针对以上3个问题作为我一个新手来说都是很头痛的,看一开始写的SQL语句是如下这样的:
select top 1 * from DSN_WeChatCustomer where status =2 and ID not in( select top 6506 ID from
DSN_WeChatCustomer where status =2 order by updateTime asc )
针对上面这个SQL语句查询出来的结果我一开始以为是正确的,最后将代码修改完整后准备提交了,我们老大说来
看看,我自信满满的说来吧!绝对没有任何问题,我们老大检查了一下我的代码,最后发现我上面写的SQL语句有
问题,老大就给我讲了一下如何实现并且帮我修正了SQL还给我讲解了为什么、错在哪里,修改代码如下:
select top 1 *
from ( select top 1000 * from DSN_WeChatCustomer where status =2 order by updateTime asc ) as a
where a.status =2
order by a.updateTime desc
修改代码后结果肯定是正确的,其实我有个问题不懂,在我所知道的是 from 后面只能跟 “表名” 为什么能在后面
跟查询语句了,老大说用 AS 转了啊,我还是有些不明白,老大说其实 from 后面 只要是一个数据集合就可以,老
大这么一说我才有点明白,突然发现自己的懂得太少了,SQL语句修改完成后老大就走开了,走开一半的时候老大
突然停下对我说了一句 以后少用 “ not in” 它的查询速度非常慢,就这样我又长知识了,感谢我的老大,我说老大
有什么这方面的书没介绍我看一下,说没有,他说帮我找一下,用公司的经费给我买几本, 容我介绍一下我的老大:
姓名:钱春源
性别:男
身高:183
个性:开朗
开发资历:10年
崇拜我的老大啊!!!!!!!!!!!!!!!!!!!!!!
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- linux快速部署mysql服务器
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题
- PostgreSQL教程(十九):SQL语言函数
- SQL Server复制需要有实际的服务器名称才能连接到服务器
- SQL Server 2000向SQL Server 2008 R2推送数据图文教程