我已经table1
id | some_field
----------------
1 | text1
2 | text2
3 | text3
以及
table2
id | table1_id | some_field
----------------------------
1 | 3 | lorem ipsum
2 | 1 | lorem ipsum
3 | 2 | lorem ipsum
one to one
和table1.id
字段之间存在table2.table1_id
关系。我需要将FK的位置更改为
table1
(意味着在table2_id
中创建table1
,并用相关的键表单table2
填充它)以获得如下结构:id | table2_id | some_field
---------------------------
1 | 2 | text1
2 | 3 | text2
3 | 1 | text3
然后删除
table1_id
字段(但与问题无关)。问题是,我是否可以使用一个普通的SQL语句来更新所有行并保存当前关系?
最佳答案
UPDATE
statement可以更新一个或多个JOIN
-ed表中的行。
假设您已经在table2_id
中创建了列table1
,那么您的UPDATE
查询应该如下所示:
UPDATE table1
INNER JOIN table2 ON table1.id = table2.table1_id
SET table1.table2_id = table2.id
这就是全部。报告的修改行数应与
table1
中的相同(或table2
中的相同)。