说我有3张桌子:
表1 :
Table1ID (pk) |
Table1Value
表2 :
Table2ID (pk) | Table1ID (fk) | Table2Value
表3 :
Table3Id (pk) | Table2ID (fk) | Table3Value
我有这样的数据:
表1:
1 | Table1Value1
2 | Table1Value2
表2:
1 | 1 | Table2Value1
12 | 1 | Table2Value2
35 | 2 | Table2Value1 (same value as 1st entry above for now)
36 | 2 | Table2Value2 (same value as 2nd entry above for now)
表3:
1 | 1 | Table3ValueData1
2 | 12 | Table3ValueData2
现在,我现在要做的就是克隆table3数据,而是设置Table2ID =属于table1ID = 2的值的id。
我尝试了这个查询:
INSERT INTO Table3 (Table2ID, Table3Value)
SELECT
Table2ID, Value
FROM
Table3 t3
JOIN
Table2 t2 on t3.Table2ID = t2.Table2
WHERE
Table1ID = 1
不幸的是,这只是使用相同的Table2ID重复数据:
1 | 1 | Table3ValueData1
2 | 12 | Table3ValueData2
52 | 1 | Table3ValueData1
53 | 12 | Table3ValueData2
这就是我希望Table3中的数据看起来像:
1 | 1 | Table3Value1Data1
2 | 12 | Table3ValueData2
52 | 35 | Table3ValueData1
53 | 36 | Table3ValueData2
现在Table3中的数据应保持不变,但外键现在应该指向不同的父级(35和36而不是1和12)。我该怎么做呢?任何帮助将不胜感激。
答案 0 :(得分:0)
我有点不清楚你究竟想做什么,但假设我理解正确,你可以这样做:
insert into Table3
select b.Table2ID, a.Table3Value
from (select t2.Table2Value, t3.Table3Value from Table3 t3 join Table2 t2 on t3.Table2ID = t2.Table2ID) a
join (select Table2ID, Table2Value from Table2 where Table1ID = 2) b on a.Table2Value = b.Table2Value
查看我的Fiddle