我有一个包含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中它是可能的,因为它是一个柱状数据库,但到目前为止我还没有找到怎么做。
答案 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