如何解决将一年的记录复制到另一年
| 我有三个表,州,城市和村庄。State (PK_Id,Name,Year)
City (PK_Id,FK_StateId)
Village (PK_Id,Year,FK_CityId)
PK表示主键,FK表示外键。我想将去年的每个州复制到新年,去年的每个城市和去年的每个村庄。
可能吗?我该怎么做?确实比看起来难。
更新:
当我要将去年的城市复制到新年时,会出现问题。当我决定将去年的村庄复制到新年时,这似乎是不可能的。
解决方法
INSERT INTO State (Name,Year)
SELECT S.Name,2011
FROM State S
WHERE S.Year = 2010
INSERT INTO City (Name,FK_StateId)
SELECT C.Name,S_new.PK_Id
FROM City C
INNER JOIN State S_old ON C.FK_StateId = S_old.PK_Id
AND S_old.Year = 2010
INNER JOIN State S_new ON S_old.Name = S_new.Name
AND S_new.Year = 2011
INSERT INTO Village (Name,Year,FK_CityId)
SELECT V.Name,2011,C_new.PK_Id
FROM Village V
INNER JOIN City C_old ON C.FK_CityId = C_old.PK_Id
AND C_old.Year = 2010
INNER JOIN City C_new ON C_old.Name = C_new.Name
AND C_new.Year = 2011
, 您可以使用临时表存储3个表的副本。更新所有临时表中的年份,然后再插入到主表中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。