Mysql 是否可以匹配插入的旧行和新行。。。选择按主键查询

Mysql 是否可以匹配插入的旧行和新行。。。选择按主键查询,mysql,Mysql,假设我在MySQL中执行以下查询: INSERT INTO table1 (someValue) SELECT someValue from table2; 此外,两个表都有主键 在查询完成后,是否有办法找到由source=>destination行主键ID组成的矩阵 因此,矩阵将告诉我们插入了哪些行,哪些是源行: 25 => 52 // 25 was the source PK ID, 52 is the inserted PK ID 解决这个问题的最佳方法是什么?有可能吗 在目标插

假设我在MySQL中执行以下查询:

INSERT INTO table1 (someValue)
SELECT someValue from table2;
此外,两个表都有主键

在查询完成后,是否有办法找到由source=>destination行主键ID组成的矩阵

因此,矩阵将告诉我们插入了哪些行,哪些是源行:

25 => 52 // 25 was the source PK ID, 52 is the inserted PK ID
解决这个问题的最佳方法是什么?有可能吗


在目标插入表中有一个特殊列并在执行插入时填充其中的源ID是唯一的方法。。。选择?

如果
someValue
是唯一的,您可以将该列上的表1和表2合并,并将它们一一匹配

SELECT ... FROM table1 INNER JOIN table2 USING (someValue); 
否则,我建议使用一个特殊列在新表中记录原始id

INSERT INTO table1 (origin_id, someValue)
SELECT id, someValue from table2;

在我的例子中,添加一个新列来保存源行ID是不可能的

我的目标表有一个“description”列,我在其中存储了填充描述——我为源行ID保留的前20个字符


我只是想指出,对于那些无法添加列或需要替代解决方案的人来说,这是另一种可能性。

+10。确切地将源表中的id作为列存储在目标表中。谢谢,在我的情况下,另一列不是选项,但我可以用源id填充其中一列,然后在获得映射数组后取消填充。这使我害怕通过向列中填充另一个值来重载列,但只要它能完成任务。@BillKarwin理论上我也会畏缩,但实际上,当你有一个100万行的表时,仅仅添加一列并不是那么简单。@my company的工具我们用来完成这些任务。还有一个我们正在评估。工具需要您在symfony中的帮助