在数据库中,我有一张包含大量信息的表格。我正在尝试做的是设置一个数字和数字相同的限制。我想我走在正确的轨道上,但我错过了一些东西。有人有想法吗?
UPDATE loc l
SET l.limit = (SELECT (lo.factor*j.limit)
FROM (SELECT limit, num, fig FROM loc WHERE typ = 'WE') j, loc lo
WHERE lo.typ = 'TR'
AND lo.num = j.num
AND lo.fig = j.fig )
WHERE l.typ = 'WE'
答案 0 :(得分:0)
您可以使用join
执行所需操作。但是你正在采用相关的子查询方法。
我怀疑问题是你的子查询与外部查询没有关联。您需要删除子查询中的loc
表:
UPDATE loc l
SET l.`limit` = (SELECT (lo.factor*j.`limit`)
FROM (SELECT `limit`, num, fig
FROM loc
WHERE typ = 'WE'
) j
WHERE l.typ = 'TR' AND
l.num = j.num AND
l.fig = j.fig
)
WHERE l.typ = 'WE';
此外,limit
是保留字。您不应将其用作列名。因为你是,你需要把它放在反引号或双引号中。