如何创建查询,其中一列中的值与另一个表中的列值相同

时间:2012-03-09 20:24:27

标签: sql-server

我的意思是我有一张桌子

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'相同。

它会是什么样子?或者它不可能?

如何

2 个答案:

答案 0 :(得分:0)

我在table1table2之间没有看到匹配的列,我猜这个示例中缺少某些内容。但我会写出这一点,假设table2的列idbooktable1匹配。

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搜索的行。