SQL移动表数据的一部分,然后替换为新表中的行键



带2个表的示例:

Table A: `id`, `a`, `b`, `c`, `X`, `Y`, `Z`   
Table B: `id`, `h`, `i`, `j`, `X`, `Y`, `Z`   

我正在制作一个包含XYZ AB的CC_4列,并使用键链接数据,即:

A `id`, `a`, `b`, `c`, `id_C`   
B `id`, `h`, `i`, `j`, `id_C`  
C `id`, `X`, `Y`, `Z`

创建这些表不是问题。
我遇到的问题是将AB的当前数据更改为ATable C0,C

我该如何完成?

我能想到的唯一方法是在移动数据时将A的ID添加为C中的列,而不是连接两个表,然后再次删除A的ID列。之后,使用Table B


编辑

我正在使用MySQL 4.1.22

作为解决方案:

  1. 用列id, X, Y, Z创建Table C(ID是自动灌溉)。
  2. 这样添加数据,因此:
INSERT INTO C (X, Y, Z)
SELECT X, Y, Z
FROM (
    SELECT X, Y, Z FROM A
    UNION
    SELECT X, Y, Z FROM B) As tempC
  1. 现在ALTERAB添加新列id_C
  2. 这样更新id_C
UPDATE A
SET id_C = (SELECT id FROM C WHERE C.X = A.X AND C.Y = A.Y AND C.Z = A.Z)
  1. (对AB进行4次完成后)从AB掉落X, Y, Z

最新更新