在论坛中出现的比较难的sql问题:23(随机填充问题)
原文:在论坛中出现的比较难的sql问题:23(随机填充问题)
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
1、一段SQL的写法,求方法!
http://bbs.csdn.net/topics/390705441
select * from k11 有10條紀錄
files1 files2 files3 files4
AA BB CC DD
ZZ EE TT YY
NN MM GG UU
另外一个表User 有99条记录,现在要随机在User这个表里面随机选3条记录
select top 3 NewID() as random,[UserId] from [User]
random UserId
E81A4DBB ming
F31B3B6C ling
16574317 Ting
将User这个表上的UserId值结果平均分配到k11上面那个表上,最后結果顯示如下
files1 files2 files3 files4 UserId
A1 BB CC DD ming
A2 EE TT YY ling
A3 MM GG UU ling
A4 XX XX XX ming
A5 XX XX XX ling
A6 XX XX XX Ting
A7 XX XX XX ming
A8 XX XX XX ling
A9 XX XX XX ling
A10 XX XX XX ming
sql代码:
-
create table k11(
-
files1 varchar(10),
-
files2 varchar(10),
-
files3 varchar(10),
-
files4 varchar(10),
-
UserId varchar(10))
-
-
insert into k11
-
select 'A1', 'BB', 'CC', 'DD', 'ming' union all
-
select 'A2', 'EE', 'TT', 'YY', 'ling' union all
-
select 'A3', 'MM', 'GG', 'UU', 'Ting' union all
-
select 'A4', 'XX', 'XX', 'XX', 'ming' union all
-
select 'A5', 'XX', 'XX', 'XX', 'ling' union all
-
select 'A6', 'XX', 'XX', 'XX', 'Ting' union all
-
select 'A7', 'XX', 'XX', 'XX', 'ming' union all
-
select 'A8', 'XX', 'XX', 'XX', 'ling' union all
-
select 'A9', 'XX', 'XX', 'XX', 'Ting' union all
-
select 'A10', 'XX', 'XX', 'XX', 'ming'
-
-
-
create table [user]
-
(
-
UserId varchar(10)
-
)
-
-
insert into [user]
-
select 'ming' union all
-
select 'ling' union all
-
select 'Ting'
-
go
-
-
-
;with t
-
as
-
(
-
select [UserId],
-
ROW_NUMBER() over(order by newid()) as rownum
-
from [User]
-
),
-
-
tt
-
as
-
(
-
select *,
-
case when rownum1 %3 =0 then 3 else rownum1 %3 end as rownum
-
from
-
(
-
select *,
-
ROW_NUMBER() over(order by getdate()) as rownum1
-
from k11
-
)a
-
)
-
-
select tt.files1,tt.files2,tt.files3,tt.files4,t.UserId
-
from tt
-
left join t
-
on tt.rownum = t.rownum
-
and t.rownum <=3
-
/*
-
files1 files2 files3 files4 UserId
-
A1 BB CC DD ming
-
A2 EE TT YY ling
-
A3 MM GG UU Ting
-
A4 XX XX XX ming
-
A5 XX XX XX ling
-
A6 XX XX XX Ting
-
A7 XX XX XX ming
-
A8 XX XX XX ling
-
A9 XX XX XX Ting
-
A10 XX XX XX ming
-
*/
2、随机返回100条数据:
如果表比较大,有上千万的数据,那么通过如下的代码,可以随机返回100条数据,这里的随机,不是真正意义上的随机,但确实能让人感觉是随机,也就是每次返回的数据都不一样,最关键的是速度非常快,接近于0秒,只消耗了 62毫秒。
-
select *
-
from
-
(
-
select *,
-
ROW_NUMBER() over(order by @@servername) as rownum
-
from dbo.xxx
-
)t
-
where rownum between CHECKSUM(getdate()) % 10000 and CHECKSUM(getdate()) % 10000+99
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
(100 行受影响)
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 62 毫秒。
在论坛中出现的比较难的sql问题:23(随机填充问题)的更多相关文章
- 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)
原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...
- 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...
- 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)
原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)
原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...
- 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)
原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...
- 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)
原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- eclipse连接夜神模拟器方法
用eclipse 进行安卓开发的时候我们会遇到安卓自带的模拟器启动时间过长,反应慢等的问题,这个时候我们就希望使用别的安卓模拟器,而我自己喜欢使用夜神模拟器.1.首先我们启动eclipse 和夜神模拟 ...
- linux下如何制作initramfs镜像?
1. 准备文件 加入已经准备好了所有文件在/home/initrd-base目录下 2. 在内核中指定/home/initramfs-base目录 General setup -> (/home ...
- Kali Linux又增加一个顶级域名kali.download
Kali Linux又增加一个顶级域名kali.download 现阶段,kali.download只提供软件包和镜像下载.大家可以把该域名作为备选软件源来使用.形式如下: deb http://k ...
- 真正的能理解CSS中的line-height,height与line-height
https://blog.csdn.net/a2013126370/article/details/82786681 在最近的项目中,常常用到line-height,只是简单的理解为行高但并没有深层次 ...
- [redis]带密码的客户端连接方法
客户端连接方法: redis-cli -h localhost -p 6380 提供host为localhost,端口为6380 带密码的客户端连接方法一: redis-cli -h localh ...
- spring boot集成Websocket
websocket实现后台像前端主动推送消息的模式,可以减去前端的请求获取数据的模式.而后台主动推送消息一般都是要求消息回馈比较及时,同时减少前端ajax轮询请求,减少资源开销. spring boo ...
- 转 ORA-13541: system moving window baseline size (691200) greater than retention (432000)
修改awr生成报告时间间隔和保存时间时报错,由默认的每小时生成,保存8天修改为每半个小时生成一次,保存5天: SQL> exec dbms_workload_repository.modify_ ...
- Unity 3D网络游戏实战 pdf
Unity 3D网络游戏实战(全) 目录: 掌握Unity3D基本元素 1.1 简单的游戏 1.1.1在场景中创建一个立方体 1.1.2编写可以使立方体运动的程序 1.1.3测试游戏1.1.4总结1. ...
- LeetCode_283. Move Zeroes
283. Move Zeroes Easy Given an array nums, write a function to move all 0's to the end of it while m ...
- MySQL普通索引性能试验
首先使用如下node.js脚本创建两张表,并为这两张表各自生成10000条数据: var fs = require('fs'); var nameS = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱 ...
