更新MySQL表中的字段,其中匹配多个表中的字段

时间:2011-09-19 22:51:02

标签: mysql sql database sql-update nested-queries

我有四张桌子。第一个包含志愿者列表,第二个包含网站列表,第三个列出项目。项目行只是对志愿者和具有id的站点以及名为 sector 的附加列的引用。

所有这三个表都来自第四个名为传统的表格。我需要从名为 sector 的列中的遗留表中的每一行中提取一个字段,并将其放在项目表中相应行的 sector 列中。

为了在更新项目表时知道我在旧版表中有正确的行,我需要匹配列 firstname 来自志愿者姓氏以及名称 municipality 的列< strong>网站及其旧版中的相应列。

我认为我的查询应该是这样的:

UPDATE projects, legacy
  SET
    projects.sector = legacy.sector,    
  WHERE (SUBQUERY CONTAINING COMPARISONS OF OTHER FEILDS IN OTHER TABLES SUCH AS
         volunteers.firstname = legacy.firstname
         volunteers.lastname = legacy.lasttname
         sites.province= legacy.province
         sites.municipality= legacy.municipality
         sites.name= legacy.name)

子查询应该是什么?

2 个答案:

答案 0 :(得分:0)

你不想在这里使用子查询,你想要一个连接。

我会为你写的,但你不会出示你的表,所以我不能。

但基本上你需要做的第一件事就是写一个SELECT,其中包含所有正确连接所有内容的表。完成后,您只需将其更改为UPDATE即可完成。

答案 1 :(得分:0)

UPDATE projects
  SET sector = legacy.sector
FROM legacy
INNER JOIN sites ON sites.province = legacy.province AND/OR
         sites.municipality = legacy.municipality AND/OR
         sites.name = legacy.name
INNER JOIN volunteers ON volunteers.firstname = legacy.firstname AND/OR
         volunteers.lastname = legacy.lasttname