sql – 用外键将列中的数据替换为其他表中的相同数据

希望你们能帮助我弄清楚如何做一些我之前没有遇到的事情.

我有一个表,称之为TableA,有很多列.其中一个是’州’,其条目如下:

state
'MA'
'NJ'
'HI'

等等.我想创建某种方法将这些值拉出到一个新的外键表中,称之为StateTable,它将具有列state_key和state.

例如,这是我设想它逐行进行的方式:

第1行:TableA中“state”列中的值为“MA”.检查StateTable是否有一个“state”列为“MA”的条目.如果是这样,获取该行的state_key,并用外键替换TableA中的条目,以便该行现在具有FK到’MA’而不是直接存储该值.如果StateTable没有’MA’条目,请插入它,并对新FK执行相同操作.等等,每一行.

所以最终结果将是两个表:

表A

state
1
2
3

StateTable

state_key    state
1            'MA'
2            'NJ'
3            'HI'

不应该有任何硬编码的东西,因为我还需要为其他列做这样的事情,比如状态,它们的有限值数量有限.

tl; dr将一种方法保存在列中,同时将列转换为FK表.

有任何想法吗?谢谢!!

最佳答案
使用自动枚举字段“state_key”创建状态表,使用SELECT DISTINCT … INTO填充它,并使用类似的东西

UPDATE TableA SET TableA.state=
   (SELECT state_key FROM StateTable where TableA.state=StateTable.state)

把价值纳入其中.

转载注明原文:sql – 用外键将列中的数据替换为其他表中的相同数据 - 代码日志