2013-04-23 143 views
3

我需要通过使用SQL的Microsoft JET数据库引擎将某些表迁移到Microsoft Access数据库中的新模式。主表中有一个ID列可用作其他几个表中的外键。我需要将此ID列更改为自动编号列。不幸的是,没有办法通过微软JET来做到这一点。使用另一个表中的值替换表列中的值

我想出的解决方案是创建一个自动编号列的新列。然后,我需要转到其他表并使用新的自动编号ID替换原始外键ID,如下所示;

主表

New ID Old ID Other column 
1  7  bla 
2  21  bla 
3  18  bla 

链接表

PT_ID Data 
7  bla 
7  bla 
18  bla 
21  bla 

什么是正确的SQL语句与新的ID替换链接表中的值? (即7变成1,21变成2,而18变成3)如果这是微软JET语法,那将是很棒的。

回答

3

我设法弄清楚了。这是我想出了

UPDATE [LinkedTable], [PrimaryTable] 
SET [LinkedTable].[PT_ID] = [PrimaryTable].[NewID] 
WHERE [LinkedTable].PT_ID] = [PrimaryTable].[OldID] 

,当你看到它,你之前制定了这样看起来非常基本的: -/

+0

伟大的答案。很多其他的信息都是为​​了做到这一点,但是在'SET'之前的初始'UPDATE'位不包括'PrimaryTable' ...这一切都是不同的。谢谢 – Luke 2016-12-07 22:22:54

相关问题