所以,假设我有一张像
这样的表格 Table 1
=============
id | ...
=============
1 | ...
2 | ...
3 | ...
. .
. .
. .
Table 2
=======================
id | table1_id | ...
=======================
1 | 1 | ...
2 | 1 | ...
3 | 2 | ...
. . .
. . .
. . .
table1_id
中的Table 2
引用id
中的Table 1
。
我想要id
和id=1
行的id=2
个。
我可以在不搞砸关系的情况下这样做吗?
答案 0 :(得分:3)
在[表1]中使用新id插入带有id 1行副本的虚拟条目。然后使用以下查询
更新id为1的id 1的所有列UPDATE T
SET T.col2 = S.col2
,T.col3 = S.col3
,T.col4 = S.col4
. = .
. = .
. = .
[Table 1] T
CROSS JOIN ( SELECT col2
,col3
,col4
.
.
FROM [Table 1]
WHERE id = 2
) S
WHERE id = 1
以同样的方式用新创建的行更新行id 2的所有列。在此删除新创建的行之后。
答案 1 :(得分:0)
我会在表1中创建一个带有新ID的临时条目,将表2中的引用从table1_id=1
移动到新ID,将table1_id=2
移动到table_1_id=1
然后移动临时参考table1_id=2
。
答案 2 :(得分:0)
向table1添加一个虚拟行。
更新表格2:update table2 set table1-id = dummyid where table1-id = 1
。
然后:update table2 set table1-id = 1 where table1-id = 2
。
最后:update table2 set table1-id = 2 where table1-id = dummyid
。
您也可以使用此逻辑更改table1。