2014-12-01 38 views
-1

使用的第i个值在一个循环,我想每次都从表中获得的第i个值,我写的是这样的:我需要从一列

FOR i IN 1..(select count (*) from table1) LOOP 
INSERT INTO TABLE2 
select id from table1 where column_nam in (select column_nam[i] from table1); 
end loop; 
end 

例如,column_nam[1]=HPPC003,但它的工作原理错了,我该怎么做?

enter image description here

+0

关系数据库中没有“ith”行。表中的行未排序。想想篮子里的球,哪一个是“ith”球?考虑到有关数组处理的所有问题,您应该退后一步,阅读关于关系数据库如何工作的良好教程。 – 2014-12-01 15:56:52

+1

a_horse说了什么 - 因此定义“ORDER BY”表达式使其成为一个有效的问题。并且请不要将图片用于值。改为发布文字。 *永远*你的Postgres版本。 – 2014-12-01 16:50:25

回答

0

通过@a_horse_with_no_name的意见是正确的,你的想法似乎站不住脚。您不能为关系数据库行提供参考,没有任何基础。

虽然我同意你应该重新审视基础知识,但我也想为这个特殊问题提出解决方案;如果表中有另一个列字段,则可以将其用作“ith”计数器引用。即Reference和Data的列,其中1,2,3等用于Reference和HPPC003,HPFC002用于Data列,然后您可以在那里选择Data WHERE Reference == 1以获得HPPC003。

我希望这会有所帮助,而Elmasri & Navathe是学习数据库基础的非常好的参考。