在论坛中出现的比较难的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格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- Socket: java Socket的isConnected()、和isClosed()判断是否在线的问题(转)
首先,很多初学者都会用这两个API来判断对方是否在线,但是经过我的实践,此API并不能实时判断是否在线的状态. 经过百度查询资料后,得出结论: 事实上这些方法都是访问socket在内存驻留的状态,当s ...
- MySQL there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause同时创建多个更新当前时间戳字段 解决方法
问题重现 在写这篇文章之前,明确我的MySQL版本,MariaDB 或者你使用 MySQL 8 也会出现如下问题 MySQL 版本 现在有这样的需求,一张表中有一个字段created_at记录创建该条 ...
- Python带参数的函数装饰器
# -*- coding: utf-8 -*- # author:baoshan # 带参数的函数装饰器 def say_hello(country): def wrapper(func): def ...
- asp乱码问题
UTF-8编码的话:在ASP脚本顶部加入<%@Language="vbscript" Codepage="65001"%>以及再在<head& ...
- ES6深入浅出-4 迭代器与生成器-4.总结
yield的值就是外面调用next得到的值 ES6给的新的语法,如果你给任何一个对象添加一个Symbol.interator的key,同时它的值是一个生成器. 下面选中的就是生成器.生成返回的东西是迭 ...
- gitlab 配置到jenkins
直接把公匙配到了gitlab,然后填入jenkins https://blog.csdn.net/zhufengyan521521/article/details/81219193 配置全局凭据 h ...
- Spring MVC 验证表单
在实际工作中,得到数据后的第一步就是检验数据的正确性,如果存在录入上的问题,一般会通过注解校验,发现错误后返回给用户,但是对于一些逻辑上的错误,比如购买金额=购买数量×单价,这样的规则就很难使用注 ...
- 使用wkhtmltopdf将多个html批量转成pdf
相关工具:wkhtmltopdf 场景:比如笔者有 ognl中文文档,全部是html,现在想把它转成pdf,放到ipad阅读,文件如下: 下载好wkhtmltox(本地安装目录 D:\develop\ ...
- 【Leetcode_easy】1046. Last Stone Weight
problem 1046. Last Stone Weight 参考 1. Leetcode_easy_1046. Last Stone Weight; 完
- 【linux学习笔记一】目录处理命令
一 建立目录:mkdir make directories //创建一个name的目录 mkdir name //-p 递归创建 //在没有目录a也没有目录b的情况下 直接创建 mkdir -p a/ ...
