1

非常に大きなテーブルの列を更新する必要があります。したがって、パフォーマンスは大きな問題です。

質問はこれと似ていますが、Sybase Adaptive Server Enterprise (ASE 12.5.4) のみに加えて、取得した行を更新する必要があります。Oracleのトップ投票の回答のように、自己結合なしでそれを行う方法はありますか?

これは結合を使用した最初の試みでしたが、目的のテーブルを遅くするようにという命令によるものです。

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 に答える