db2:从表中选择而不替换

时间:2013-11-12 15:05:46

标签: db2

您好我想问一个简单的问题 - 在DB2中是否有一种方法可以从表中选择一行(无论是基于连接还是选择随机行),然后从同一个表中选择再次选择最后一行,或任何以前的行都无法选择。

我在想我必须在表格中的每一行循环我的代码并删除我选择的每一行,但如果有人有替代解决方案,我会感兴趣。不需要代码,而是描述另一种方法。

谢谢,

阿龙

2 个答案:

答案 0 :(得分:2)

您可以使用光标,并使用名为locate-delete的'删除当前'功能。有关更多信息:

答案 1 :(得分:2)

执行此操作的最简单方法是声明游标以从表中选择所有行然后处理 光标一次一行。每行将被精确选择一次(这几乎就是光标的全部内容)。

我怀疑这不是你要找的答案。你最有可能至少有两个其他约束 选择问题:

  • 在整个表处理完毕之前,您不希望或不能打开单个游标
  • 您希望在选择行的顺序方面具有某种“随机性”

无法在单个游标下打开和处理整个表的问题可以解决 在选择之间保持某种“状态”信息。 “状态”可用于确定是否有一行 仍有资格在随后的查询中进行选择。您可以在表中添加另一列以保留“已选中” 那一行的状态。插入行时,其“选定”状态设置为“否”。在每个选择操作状态 所选行的更新为“是”。选择新行的谓词需要有一个WHEN SELECT_STATE = 'no' 添加到它以取消之前选定的行的资格。如果您无法更改所选表格的结构 从,然后添加第二个表与选择表具有相同的主键加上“选定”指标然后加入 这些表获取所需的状态信息。

另一种方法是在选择一行后删除它。

这些或类似的状态管理可用于解决选择资格问题。

如果你需要在选择过程中引入随机性(即难以猜测是什么 要选择的下一行是),那么你有一个非常不同的问题需要解决。如果是这样的话 请问一个新的问题,概述你的表的大致大小(多少行)和关键结构 是(例如,1到100000之间的数字,30个字符的名称等)。

相关问题