-- 执行脚本如果是一个表就会有184,756行结果,问题:如何自动平分生成50个表,请专家答疑解惑
;WITH t AS
(
SELECT TOP 20 rn=ROW_NUMBER()OVER(ORDER BY @@spid)
FROM sysobjects
)
SELECT [ID]=Identity(INT,1,1),concat_ws(' ',a.rn,b.rn,c.rn,d.rn,e.rn,f.rn,g.rn,h.rn ,i.rn,j.rn) as notext
INTO [#tb66]
FROM T a
JOIN t b ON a.rn<b.rn
JOIN t c ON b.rn<c.rn
JOIN t d ON c.rn<d.rn
JOIN t e ON d.rn<e.rn
JOIN t f ON e.rn<f.rn
JOIN t g ON f.rn<g.rn
JOIN t h ON g.rn<h.rn
JOIN t i ON h.rn<i.rn
JOIN t j ON i.rn<j.rn
如何自动平分生成50个表,请专家答疑解惑
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- shinger126 2022-07-01 11:47关注
declare @i int,@k int
declare @sql nvarchar(max)
select @i=count()/50+1 from #tb66
set @k=0
while @k<50
begin
select min(id),max(id) from #tb66
where id between @i@k+1 and @i*(@k+1)
set @k=@k+1
end
每个表的最小ID和最大ID给你算出来了,至于怎么弄到50个表里面,在循环内用动态语句去处理就好
不用循环也可以。
declare @i int
declare @sql nvarchar(max)
select @i=count()/50+1 from #tb66
select 'insert into table'+left(number+1,2)+' from #tb66
where id between '+ left( number@i+1,10)+' and '+ left((number+1)*@i,10)
from master..spt_values where type='P' and number between 0 and 49
同样能求出来最小ID和最大ID,分组为NUMBER+1,生成插入脚本本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 对于这个问题的解释说明
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备
- ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。