更新多行

时间:2014-02-12 03:47:20

标签: mysql sql

在数据库中,我有一张包含大量信息的表格。我正在尝试做的是设置一个数字和数字相同的限制。我想我走在正确的轨道上,但我错过了一些东西。有人有想法吗?

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'

1 个答案:

答案 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是保留字。您不应将其用作列名。因为你是,你需要把它放在反引号或双引号中。