博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql 随机数 且不在记录中(抽奖)
阅读量:4679 次
发布时间:2019-06-09

本文共 1067 字,大约阅读时间需要 3 分钟。

表Luck 是存放已被使用的数字

CREATE TABLE [Luck](	[Id] [bigint] IDENTITY(1,1) NOT NULL,	[Key] [bigint] NULL,)

插入几条数据

Insert Into Luck(Key) Values(1)Insert Into Luck(Key) Values(2)Insert Into Luck(Key) Values(3)Insert Into Luck(Key) Values(5)

查询 1-10且不存在 Luck中  借助 master.dbo.spt_values

select top 1 number from master.dbo.spt_values where type='P' and number between 1 and 10 and number not in (select [Key] from Luck) order by NEWID() 

但是 master.dbo.spt_values 局限性 最大只能2047

当超过2047  可以自己创建一个表

CREATE TABLE [Number](	[Num] [bigint] NULL)

  然后在Number表中插入连续的1到你所需要的最大值

例如 1-10

Insert Into Number(Num) Values(1)Insert Into Number(Num) Values(2)Insert Into Number(Num) Values(3)Insert Into Number(Num) Values(4)Insert Into Number(Num) Values(5)Insert Into Number(Num) Values(6)Insert Into Number(Num) Values(7)Insert Into Number(Num) Values(8)Insert Into Number(Num) Values(9)Insert Into Number(Num) Values(10)

  

select top 1 Num from Number where Num not in (select [Key] from Luck)  and num between 1 and 10 order by NEWID()

  

  

 

转载于:https://www.cnblogs.com/Lance-Lan/p/3360262.html

你可能感兴趣的文章
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
决策树
查看>>
团队作业
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
大型网站高并发的架构演变图-摘自网络
查看>>
8丶运行及总结
查看>>
WebApi请求原理
查看>>
[Node.js] node-persist: localStorage on the server
查看>>
jquery.event 研究学习之bind篇
查看>>
LOJ #108. 多项式乘法
查看>>
libusb开发指南
查看>>
SAS基础 -- 逻辑库不存在问题解决
查看>>
Servlet监听器统计在线人数
查看>>
关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案 草稿
查看>>
Python--小功能应用
查看>>
[linux-内核][转]内核日志及printk结构浅析
查看>>
程序猿的爱情-2012-01-22
查看>>
CentOS7.2 安装iptables
查看>>
网络是怎样连接的—1.浏览器生成消息
查看>>