如何使用带有SQL的两个链接表用外键填充字段?

如何使用带有SQL的两个链接表用外键填充字段?,sql,sql-server,database,ms-access,Sql,Sql Server,Database,Ms Access,我在Access 2013中使用微软的SQL。目前,我有三个独立的表。其中一个字段[name]是一个数字,表2有一个字段,字段中有人名[name]和每个人名的主键,表3与表1相同,只是它的[name]字段将表2中的人名作为短文本。我想使用表3中的[name]作为参考,以便将表2中相应的ID号放入表1.name中。这可能吗?如果可能的话,我应该怎么做?希望编写一个SQL查询 table1 id | name (number)| other | ---------------------------

我在Access 2013中使用微软的SQL。目前,我有三个独立的表。其中一个字段[name]是一个数字,表2有一个字段,字段中有人名[name]和每个人名的主键,表3与表1相同,只是它的[name]字段将表2中的人名作为短文本。我想使用表3中的[name]作为参考,以便将表2中相应的ID号放入表1.name中。这可能吗?如果可能的话,我应该怎么做?希望编写一个SQL查询

table1
id | name (number)| other |
---------------------------
1 |               |  ...  |
2 |               |  ...  |
3 |               |  ...  |




table2
id | name (number)|
-------------------
10 | person1
20 | person2
30 | person3




table3
id | name (short text)| other |
---------------------------
1 | person2           |  ...  |
2 | person3           |  ...  |
3 | person1           |  ...  |
基本上,我的目标是在table3.name=table2.name时,用相应的table2.id填充table1.name。例如,table1第1行有person2,因此person2 id将出现在相应的table1行中,其中table1.id=table2.id。很抱歉,如果我试图以书面形式解释这一点做得不好

另外,使用两个表是否更容易做到这一点?可能只有table3,当table2.name=table3.name时,用table2.id中的值替换table3.name。虽然它会在数据类型为短文本的字段中输入一个数字,但不确定这是否会导致问题。 谢谢你的帮助

解决了这个问题

最后只用了两张表,表2和表3。我使用table2.id中的值更新了table3.name,其中table3.name=table2.name

数字存储为短文本,试图将字段数据类型更改为数字,但收到一个错误,即我可能会丢失~1000中的一些数据8值,尽管将其保留为短文本可能会很好

UPDATE table3, table2
SET table3.name = table2.id
WHERE table2.name = table3.name;
如果你还想用三张桌子,我发现这很有效。允许您事先将数据类型更改为数字,这样您就不会有丢失数据的风险

UPDATE table1, table2, table3
SET table1.name = table2.id
WHERE table2.name = table3.name
AND table1.ID = table3.ID

也许用实际的模式和虚拟数据来描述您的情况比用文字来描述问题更能说明问题。如果在阅读一次后不容易理解,则不清楚。对不起,我将添加更好的,也许现在更新您的描述以引用您添加的架构中的列。。。例如,您的字段_1应该是我假定的id?抱歉,希望能有所帮助。不要发布太多,所以我不熟悉格式,谢谢你的建议。如果你能解决这个问题,我将为未来的观众评论解决方案。