想不到一个查询结构来规范化这个表

时间:2013-10-01 19:16:11

标签: mysql sql

现在我有一张各自州的城市表。

目前状态存储为varchars(状态缩写),但为了规范化表,我有一个存储状态ID的新状态表。

所以我在cities表中添加了一个我希望用state_id填充的列,匹配状态和城市中存储的缩写。

一旦完成,我可以删除城市中的缩写列。

出于某种原因,我想不出一个查询来运行它?我希望尽可能避免制作程序......我认为我的创意果汁今天已经用完了

2 个答案:

答案 0 :(得分:1)

UPDATE
  city_state cs
  INNER JOIN state s ON s.StateAbbr = cs.State
SET
  cs.StateID = s.StateID

答案 1 :(得分:1)

这是怎么回事。

UPDATE
  city_state cs
SET
  cs.StateID = (Select StateID from state where s.State = cs.StateAbbr);