私はいくつかのデータデータを持つテーブル「mydata」を持っています:
id name position
===========================
4 foo -3
6 bar -2
1 baz -1
3 knork -1
5 lift 0
2 pitcher 0
を使用して注文されたテーブルを取得しますorder by position ASC;
位置列の値は一意ではない可能性があり (何らかの理由でここでは説明されていません :-)、 の間にカスタム オーダーSELECT
を提供するために使用されます。
私がしたいこと :
順序を破壊しない一意の位置を各行に関連付けることにより、テーブル列の「位置」を正規化したいと考えています。さらに、正規化後の最高位は -1 である必要があります。
希望する結果のテーブルの内容:
id name position
===========================
4 foo -6
6 bar -5
1 baz -4
3 knork -3
5 lift -2
2 pitcher -1
いくつかの方法を試しましたが、正しい update
ステートメントを実装できませんでした。
私はそれを使用していると思います
generate_series( -(select count(*) from mydata), -1)
位置列の新しい値を取得するための良い出発点ですが、生成された列データを更新ステートメントにマージする方法がわかりません。
誰かが私を助けてくれることを願っています:-)