我已经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 onetable1.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中的相同)。

10-08 08:08
查看更多