1

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

问题与此类似,但仅适用于 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')
4

1 回答 1

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);

有什么帮助吗?

于 2010-07-14T10:27:26.770 回答