【发布时间】:2016-05-15 22:25:54
【问题描述】:
我正在尝试合并(联合)两个具有相同结构的表。在已知的行块中,主键(一个 auto_increment 整数)在两个表中用于不同的数据。假设它是主键为 2000-2150 的行。将表 B 中的这些记录重新编号为未使用的值(例如,在 3000 以上的范围内)的最佳方法是什么,以便合并可以继续进行而不会发生冲突?我应该就地更新它们(例如,通过向该范围内的每个 ID 添加 1000),还是有更好的方法?
注意事项:
对这个表的所有引用都声明为
ON UPDATE CASCADE,这样我就可以安全地重新编号它们而不会产生任何后果。其余的合并我可以处理。两个表都包含有用的数据,当重复超出该范围的键时,我会将版本保留在表 A 中。
【问题讨论】:
-
如果可以,请提供您现在正在尝试的查询,以便我们可以解决一些问题。然而,作为一个简短的回答,在您选择的
Table B中,您可以:select Id + 3000, col2, col3, col4 from TableB。 - 也就是说,如果Id列是数字。 -
我还没有查询——我不确定要采取哪种方法。我想过做一个
UPDATE为块中的每个 id 添加 1000,但我想我会问是否有更合适的方法。 -
好的,我将把我的评论移到一个答案上,然后再添加一些想法。
-
任何答案对您有帮助吗?不幸的是,不太可能会有更具体的内容... =(
-
不是特别...我现在正在检查,但是当我有更多时间时,我必须仔细看看。