我在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 +用户执行此操作。
有什么想法吗?
答案 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记录可能需要一些。您可以在执行更新之前查看删除索引,然后在完成后重新创建它们。这可以节省您更新索引和表格的时间。