MonetDB - 将数据插入一列

时间:2015-01-28 12:33:25

标签: sql monetdb

我有一个包含5列的表格:

CREATE TABLE "voc"."MyTable" (
        "c_1"  TINYINT,
        "c_2"  TINYINT,
        "c_3"  TINYINT,
        "c_4"  TINYINT,
        "c_5"  TINYINT
);

我想单独计算每列的值,并仅插入此列的值。 e.g。

INSERT INTO "voc"."MyTable"(c_1)
SELECT ....

此Insert命令在MyTable中插入5000行,其中c_1为column,其他列为null。 如果我现在跑步

INSERT INTO "voc"."MyTable"(c_2)
SELECT ....

然后我又有了另外5000行。总共 - 10000行。我希望c_2的新值设置在与c_1相同的行中。即

c_1 | c_2 | c_3 | c_4 | c_5
1     1     null null  null
2     2     null null  null
1     2     null null  null

我认为在monetdb中它是可能的,因为它是一个柱状数据库,但到目前为止我还没有找到怎么做。

1 个答案:

答案 0 :(得分:-1)

这应该在仅插入第一列后完成。 这里改变了转移到其他列的表(other_table)名称

declare @sql nvarchar(50)

declare @value1 nvarchar(50)
declare @value2 nvarchar(50)

declare   @tab1 table(a int identity(1,1), t_name nvarchar(max)) 
insert into @tab1 select col_1 from "voc"."MyTable"

declare   @tab2 table(a int identity(1,1), col_2 nvarchar(max)) 
insert into @tab2 select col_2 from other_table

declare @count int=1
declare @c int
select @c=count(table_name) from table




  while(@count<=@c)
 begin

select @value1 =t_name from @tab1 where a=@count
select @value2 =col_2 from @tab2 where a=@count

set @sql=(   'Update voc.MyTable
        set column='+@value2
            +' where col_1='+@value1    )
exec @sql
set @count=@count+1
end