我的意思是我有一张桌子
table1
idbook idauthor title magazine
1 NULL title_1 magazine_1
2 2 title_2 magazine_2
和另一个
table2
idauthor name surname
1 name_1 surname_1
2 name_2 surname_2
我想编写一个查询,更新table1并为title_1设置值'idauthor'与table2中名为_的'idauthor'相同。
它会是什么样子?或者它不可能?
如何
答案 0 :(得分:0)
我在table1
和table2
之间没有看到匹配的列,我猜这个示例中缺少某些内容。但我会写出这一点,假设table2
的列idbook
与table1
匹配。
update table1, table2
set table1.idauthor = table2.idauthor
where table1.idbook = table2.idbook
如果您没有匹配的列(或列),则不能进行更新。
答案 1 :(得分:0)
实际上,公共列是idauthor,它可以被认为是外键。但由于无法将table1的行与table2匹配,因此您必须执行一种脏更新语句,该语句仅适用于上面给出的示例,而不适用于其他方案。
UPDATE table1 SET idauthor = (SELECT idauthor FROM table2 WHERE name LIKE "name_1" AND surname LIKE "surname_1") WHERE idauthor ISNULL;
此查询将更新id_NAME列中具有NULL值的table1的所有行,并将其设置为您使用name_1和surname_1搜索的行。