【发布时间】:2015-06-02 17:41:15
【问题描述】:
我有两个 MySQL 表,我们可以分别调用 Foo 和 Bar。
两个表都有一个名为PrizeGroupId 的列。目标是在这些列之间创建一对一的关系,我创建了存储过程来添加/编辑Foo,通过Bar 中的一对一关系更新相应的行。
问题在于数据并非总是以这种方式结构化,我需要编写一个脚本将数据从之前的状态(我将要描述)转换为一对一基于PrizeGroupId 的关系。
以前,Foo 中的多行可能具有相同的 PrizeGroupId,因此基于 PrizeGroupId 的 Bar 到 Foo 中的条目之间存在一对多关系。我需要编写的脚本必须将这种性质的每个一对多实例分解为Foo 和Bar 之间的许多(几乎相同)一对一关系。
原则上,我想:
- 遍历
Foo - 查看当前行的
PrizeGroupId在Foo中是否不唯一。 - 为其分配一个唯一值(可能是当前项目的主键)
- 使用新的
PrizeGroupId在Bar中添加一行。将旧行的所有其他数据复制到新行中,使其“几乎相同”。 - 说到底,从
Bar中删除旧的一对多行。
我了解这个问题,以及我如何在编程语言的伪代码中做到这一点,但是我仍在学习 MySQL,不知道如何解决这种性质的问题。
如果您可以通过 MySQL 代码为我提供帮助和/或我可以采取/阅读哪些步骤来解决这个问题,或者至少指出与此相关的阅读/SO 问题尽管我很难自己找到特定的资源,但这种问题将不胜感激。
【问题讨论】:
标签: mysql one-to-many one-to-one