我必须更新一个非常非常大的表中的列。因此,性能是一个大问题。
问题与此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')
答案 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);
有任何帮助吗?