更新每个组的行,其他列中包含最大值

时间:2010-07-14 08:39:42

标签: sql sybase-ase

我必须更新一个非常非常大的表中的列。因此,性能是一个大问题。

问题与此one类似,但仅适用于Sybase Adaptive Server Enterprise(ASE 12.5.4),我需要对检索到的行进行更新。有没有办法在没有自我加入的情况下这样做,就像在甲骨文的最高投票答案中一样?

这是第一次尝试使用连接,但是它的目的是为了减慢表格的命令:

UPDATE table SET flag = 1
FROM table AS a1
LEFT OUTER JOIN table AS a2
ON (a1.groupId = a2.groupId AND a1.id < a2.id)
WHERE a2.groupId IS NULL
and a1.somename in ('x', 'y')

1 个答案:

答案 0 :(得分:1)

会...

UPDATE table AS t1 SET flag = 1
    WHERE t1.somename IN ('x', 'y') AND
          t1.id = (SELECT MAX (t2.id)
                    FROM table t2
                    WHERE t2.groupId = t1.groupId);

有任何帮助吗?