RICHEER COCA 2022-07-01 11:02 采纳率: 93.9%
浏览 56
已结题

如何自动平分生成50个表,请专家答疑解惑


--  执行脚本如果是一个表就会有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 
  • 写回答

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,生成插入脚本

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月11日
  • 已采纳回答 7月3日
  • 修改了问题 7月1日
  • 创建了问题 7月1日

悬赏问题

  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。