您的位置:首页 > 数据库

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年


崇拜我的老大啊!!!!!!!!!!!!!!!!!!!!!!



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息