我是SQL的新手,今天分配了一项重要任务-为表中的数据创建迁移脚本。据我了解,迁移脚本是从表A复制数据并将其移动到其他表B和C等。当数据库设计不断变化并且团队希望保留数据时,这似乎很常见。
我的任务:我有一个JobOffer
带有CityId字段的表。现在,团队希望删除该字段,并保留信息,他们将CityId添加到Address
表中,并使用称为的中间表连接两个表Location
(这使JobOffer具有多个地址)。
我不知道如何执行此任务。我喜欢的C#中的类比是这样的:
foreach (var row in JobOffer)
{
int addressId;
if (!Address.Contains(row.CityId)){
addressId = Address.add(row.CityId);
Locaion.add(row.JobOfferId, addressId);
}
else
{
Locaion.add(row.JobOfferId, Address.get(row.CityId));
}
}
如何在SQL中执行此操作?
您需要三张表-一张用于候选人,一张用于地址(位置),一张将两者链接在一起。第三张表是必需的,因为您描述的是多对多关系。一个候选人可能有多个位置,一个地方可能会容纳多个候选人。
当我创建与您相似的文件时,需要对输入数据进行两次扫描:第一次检查是否有所有位置。如果缺少任何内容,我将其插入到位置表中。
第二次扫描将数据插入候选人和canditatelocs表中。至此,我确定知道位置表中每个候选人的地址。
这是表的描述:
创建候选表(candidateid int身份主键,idate日期时间默认getdate(),名称varchar(200))
创建表候选人位置(candidateid int,locid int)
创建表位置(locid int身份主键,城市varchar(500),州varchar(500))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句