VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 836|回复: 5

向数据库里添加循环数据问题(thanks)

[复制链接]

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-8 18:30:01 | 显示全部楼层 |阅读模式
有个表,结构如下:
faultbit   faultname  eqname
0            过载       1a
1            跑偏       1a
2                       1a
3                       1a
4                       1a
5                       1a
6                       1a
7                       1a
0           过载        2a
1           跑偏        2a
2                       2a
3                       2a
4                       2a
5                       2a
6                       2a
7                       2a
....以此类推,一共有1000个不同的equname名,每个equname相同位置上对应相同的faultname值,应该怎样写一条循环sql语句能快速建完这张表,每个equname对应faultbit值0到8。谢谢
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-4-1 15:15:02 | 显示全部楼层
equname的值从哪来?
回复

使用道具 举报

0

主题

49

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-4-1 23:15:01 | 显示全部楼层
eqname 是从哪里取到的?
从另外的表里吗?
假如是从表teqname中取得的

select faultbit,faultname,eqname
into mytable
from (select eqname from teqname) a,
(select 0 as faultbit,过载 as faultname union
select 1,跑偏  union      
select 2,''  union                     
select 3,''  union                     
select 4,''  union                  
select 5,''  union                  
select 6,''  union                                      
select 7,'' ) b               

--如果是从其他地方取得的,或者有一定的规律
那就

create table mytable
(
faultbit int,
faultname varchar(10),
eqname varchar(10)
)

declare @eqname
set @eqname = '值' --赋值
while (条件)
begin
insert inot mytable(faultbit,faultname,eqname)
select faultbit,faultname,@eqname  as eqname
from
(select 0 as faultbit,过载 as faultname union
select 1,跑偏  union      
select 2,''  union                     
select 3,''  union                     
select 4,''  union                  
select 5,''  union                  
select 6,''  union                                      
select 7,'' )b

--这里写为@eqname 赋新值的语句
end
回复

使用道具 举报

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-3 09:00:01 | 显示全部楼层
补充:equname是从另外一个excel表中得到的,一共1000个,怎么插入这1000*8个数据快呢?表的结构已经存在!冷箫轻笛,能在把循环说清楚点吗?
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-7 21:30:02 | 显示全部楼层
Declare @i int,@ii int,@faultname char(10),@equname char(10)
set @i=1
Set @ii=1

while @ii<1001
begin

set @equname=convert(varchar,@ii)+'a'
print @equname

while @i<9
begin
IF @i=1  SET @faultname='aaa'
IF @i=2  SET @faultname='bbb'
IF @i=3  SET @faultname='ccc'
IF @i=4  SET @faultname='ddd'
IF @i=5  SET @faultname='eee'
IF @i=6  SET @faultname='fff'
IF @i=7  SET @faultname='ggg'
IF @i=8  SET @faultname='hhh'

  insert into fault(faultbit,faultname,equname) values(@i,@faultname,@equname)
  set @i = @i +1
end
if @i=9 set @i=1

set @ii=@ii + 1
end
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-6-3 16:15:01 | 显示全部楼层
insert into 目标表(faultbit,faultname,eqname)
    select 0,列1,eqname FROM excel表
UNION ALL select 1,列2,eqname FROM excel表
UNION ALL select 2,列3,eqname FROM excel表
UNION ALL select 3,列4,eqname FROM excel表
UNION ALL select 4,列5,eqname FROM excel表
UNION ALL select 5,列6,eqname FROM excel表
UNION ALL select 6,列7,eqname FROM excel表
UNION ALL select 7,列8,eqname FROM excel表
UNION ALL select 8,列9,eqname FROM excel表
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表