我有两个MySQL表,我们可以调用Foo
和Bar
。
两个表都有一个称为PrizeGroupId
的列。目标是在这些列之间创建一对一的关系,并且我创建了存储过程来添加/编辑Foo
,该存储过程通过Bar
中的一对一关系来更新相应的行。
问题在于,数据并非总是以这种方式构造的,我需要编写脚本以将数据从其先前状态(我将要描述)转换为一对一关系基于PrizeGroupId
。
[以前,Foo
中的多行可能具有相同的PrizeGroupId
,因此基于Bar
,Foo
至PrizeGroupId
中的条目之间存在一对多的关系。我需要编写的脚本必须将这种性质的每个一对多实例分解为Foo
和Bar
之间的许多(几乎相同)一对一的关系。
原则上,我想:
Foo
PrizeGroupId
在Foo
中是否唯一。 Bar
在PrizeGroupId
中添加一行。将所有旧行的其他数据复制到此新行中,以使其“几乎相同”。Bar
中删除旧的一对多行。我了解问题,以及如何以编程语言的伪代码实现此目的,但是我仍在学习MySQL,并且不确定如何解决此类问题。
如果您可以通过MySQL代码为我提供帮助,和/或为解决该问题可以采取/了解采取哪些步骤,或者至少使我指出与此类相关的阅读/ SO问题,尽管我自己很难找到特定的资源,但还是可以解决这个问题。
我有两个MySQL表,我们可以将其称为Foo和Bar。这两个表都有一个称为PrizeGroupId的列。目标是在这些列之间创建一对一关系,并且我已经创建了存储的...
您要的并不难。您的某些想法正在妨碍您。首先,几乎没有人会在SQL中进行迭代。 SQL不是那种语言。 SQL中的所有操作都是通过一组操作完成的。
[Bar表必须对Foo中的每个记录包含一个记录,而Foo中的PrizeGroupId字段必须是不合法的。由于Foo.Id已经是唯一的,因此将其用作外键很有意义。