数据库 表数据 每一条数据排序 放到另一张表中--存储过程

本文介绍了一个SQL存储过程的实现细节,该过程用于将一个数据表中的特定列按升序排序,并将排序后的数据迁移到另一个新创建的表中。此操作涉及到表的创建、存储过程的设计及执行等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要查的数据----数据表名xuan5kjjgid    

创建另一个表  ---xuan3to5  (列名除了four five 两列  其他列名基本一致) -----把表xuan5kjjgid   one  two three 三列从小到大排序   放到xuan3to5表中 one two three

存储过程

 

--如果有这个表 删除
  if(object_id('xuan3to5','U')is not null)
  drop table xuan3to5
  go
  --创建一张表  
  create table xuan3to5
  (
  id int not null,
  code nvarchar(200),
  one int,
  two int,
  three int,
  dates nvarchar(200),
  qiansanshangci nvarchar(200),
  qiansanjiange int,
  )
  
  --如果有proc_table_to_table 存储过程 删除
  
  if(OBJECT_ID('proc_table_to_table','P')is not null)
  drop proc proc_table_to_table
  go
 -- 创建proc_table_to_table存储过程
  create proc proc_table_to_table
    --不需要输出参数  所以不需要写参数
  as  
  --过程要用到的参数
  declare @table1_count int,
  @table_id int,
  @table_code nvarchar(200),
  @table_one int,
  @table_two int,
  @table_three int,
  @table_dates nvarchar(200),
  @table_qiansanshangci nvarchar(200),
  @table_qiansanjiange int

   ---取出条数
  select @table1_count=COUNT(*) from xuan5kjjgid
  --准备循环
  declare @i int;
  set @i=0;
     --循环每一条数据
    while @i<@table1_count
    begin
    --查出每一条数据
    select  @table_id=id,@table_code=code,@table_dates=dates,@table_qiansanshangci=qiansanshangci,@table_qiansanjiange=qiansanjiange from xuan5kjjgid  where id =188831+@i   
 ---创建变量表  因为表只能初始化一次 一直到循环完成才能变量表删除 下面中只能删除数据
   declare @tb table(num int)
   --添加变量表 @tb 3条数据 (one(一条) two(第二条) three(第三条)数据)
   insert into @tb 
   select one from xuan5kjjgid  where id =188831+@i 
   union 
   select two from xuan5kjjgid  where id =188831+@i 
   union 
   select three from xuan5kjjgid  where id =188831+@i 
   --创建另一个变量表  并把@tb  表排序  添加进去
   declare @te table(id int identity(1,1),num int)
  insert into @te select num from @tb order by num
  ---取出排序后的数据  放到变量 @table_one @table_two @table_three
  select @table_one=(select top 1 num from @te )
   select @table_two=(select top 1 num from @te where id not in(select top 1 id from @te))
    select @table_three=(select top 1 num from @te where id not in(select top 2 id from @te))
    
    --把数据添加到最终的表中   
    insert into xuan3to5 values(@table_id,@table_code,
    @table_one,@table_two,@table_three,
    @table_dates,@table_qiansanshangci,@table_qiansanjiange)
    set @i=@i+1;
    --因为变量表  只能初始化一次  只能删除数据
  delete @tb
  delete @te
  --循环结束
    end
--存储过程结束


--执行存储过程
exec proc_table_to_table

 

                                   

转载于:https://www.cnblogs.com/zhangwei99com/p/7349069.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值