Perl 5.10 访问 2010
大家好,
我有一个表,其关键字段不太正确,定义了 AUTOINCREMENT 但不是PRIMARY KEY。因此,具有重复键值的行已找到进入表的方式。我需要以编程方式清除重复的行,每个键值只留下一行,这将是唯一的。
假设行已经按顺序排列,这样的事情应该可以完成:
DECLARE @prevClientId = "XXX";
DECLARE @currClientId = "XXX";
DECLARE csr CURSOR FOR SELECT [Client ID] FROM [Entity Client] FOR UPDATE;
OPEN csr;
FETCH csr INTO @currClientId;
DO {
IF( @currClientId != @prevClientId) {
@prevClientId = @currClientId; ) {
} else {
DELETE FROM [Entity Client] WHERE CURRENT OF csr;
}
FETCH csr INTO @currClientId;
} UNTIL SQLSTATE = '02000';
CLOSE csr;
这应该遍历每一行并删除其键值与前一行的键值匹配的每一行。
问题: 1 - MS Access 是否允许使用游标?如果是,如何在 perl 脚本中编写代码?如果不是,还有什么办法可以单步遍历表格的每一行?这与简单地循环遍历 $sth->fetchrow_arrayref 的结果不同,因为在扫描了所有行之后,您正在处理内存中的结果。
关于如何以编程方式从 Access 表中删除重复行的任何其他建议将不胜感激。
TIA,
仍在学习的史蒂夫