是否可以匹配由INSERT插入的新旧行...通过主键进行SELECT查询

时间:2019-01-21 14:46:04

标签: mysql

说我在MySQL中执行以下查询:

INSERT INTO table1 (someValue)
SELECT someValue from table2;

此外,两个表都具有主键。

查询完成后,是否可以找到由源=>目的行主键ID组成的矩阵?

所以矩阵会告诉我们哪些行被插入,哪些行是源行:

25 => 52 // 25 was the source PK ID, 52 is the inserted PK ID

解决此问题的最佳方法是什么,有可能做到吗?

这样做是唯一的在目标插入表中具有特殊列并在执行插入...选择时填充源ID的方法吗?

2 个答案:

答案 0 :(得分:2)

如果someValue是唯一的,则可以在该列上加入table1和table2并将它们一对一匹配。

SELECT ... FROM table1 INNER JOIN table2 USING (someValue); 

否则,建议使用特殊列在新表中记录原始ID。

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

答案 1 :(得分:0)

对于我而言,无法添加新列来保存源行ID。

我的目标表有一个'description'列,我存储了填充的描述-我为源行ID保留了前20个字符。

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