SQL - 如何在表A和A之间创建新关系C基于A& A之间的现有关系B - en质量?

时间:2011-09-07 03:53:24

标签: mysql sql

我在MySQL 5.x数据库中有以下表格:

Users:
 id
 county_id
 state_id

Counties:
 id
 state_id

States:
 id

状态是一个新表,每个县属于一个状态,到目前为止每个用户都属于一个县 - 我希望能够直接将用户与状态关联,然后删除Counties表。

我可以找出用户属于哪个州引用用户>全国县>国家与可以将各个用户与以下伪SQL重新关联:

UPDATE users
 SET state_id = (SELECT id FROM state WHERE state_id=(SELECT state_id FROM counties WHERE id=users.county_id) )
WHERE user_id=324235;

但不确定如何为我的数据库中的所有320k +用户执行此操作。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

UPDATE FROM users AS u
INNER JOIN counties as c
  ON u.county_id = c.id
INNER JOIN states as s
  ON c.state_id = s.id
SET u.state_id = s.id

然后加一壶咖啡。 320k记录可能需要一些。您可以在执行更新之前查看删除索引,然后在完成后重新创建它们。这可以节省您更新索引和表格的时间。