从同一表更新表的值

时间:2015-12-09 15:26:07

标签: sql oracle

我有一个没有pk的表,我需要更新一个特定记录的导入,其他的总和从某个条件导入同一个表。

尝试解释一下。

我有表X,列ID和IMP(这是我需要更新的导入)。所以我试图用ID = 5的记录的IMP值更新其他IMPORT的总和,其中记录id是< 5。

UPDATE X old
SET old.IMP = 
  (SELECT SUM(new.IMP)
  FROM X new
  WHERE new.ID<5)
WHERE old.ID = 5;

但更新需要很长时间。我甚至不知道它是否完成了,因为它耗费了太多而且我已经中止了剧本。

我做错了吗?

修改

呀。你问我适当的情况。在桌子上工作真的很小,有大约2000条记录。当然没有索引。我仍然不知道为什么需要这么多。如果我只是运行脚本来获取SUM,它需要一些ms,但是有了更新,它似乎会陷入我不理解的东西。

编辑2

计算机的第一条规则:重新启动。这就是一切重新开始工作的方式。不知道发生了什么,但只是重启机器,现在脚本正常工作。对不起任何麻烦。

1 个答案:

答案 0 :(得分:0)

运行这些查询并共享输出:

select sum(bytes)/1024/1024 from dba_segments where segment_name = 'X';

select owner, index_name, column_name from dba_ind_columns where table_name = 'X';

select count(1) from X;

如果您有权访问OEM,则可以监视sql语句,以查看查询是否有进度或阻止程序。