希望你们能帮助我弄清楚如何做一些我之前没有遇到的事情。
我有一个表,称之为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;用一种方法来保存列中的数据,同时将列转换为FK表。
有什么想法吗?谢谢!
答案 0 :(得分:4)
使用自动枚举字段“state_key”创建状态表,使用SELECT DISTINCT ... INTO
填充它,并使用类似
UPDATE TableA SET TableA.state=
(SELECT state_key FROM StateTable where TableA.state=StateTable.state)
获取值。
答案 1 :(得分:0)
我的建议是做以下
如果您需要了解查询,请告诉我。