我有四张桌子。第一个包含志愿者列表,第二个包含网站列表,第三个列出项目。项目行只是对志愿者和具有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)
子查询应该是什么?
答案 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