2011-07-17 8 views
1

このソリューションは、SQL Serverフォーラムでテーブル内のレコードを並べ替える方法に関するものです。PostgreSQLのレコードの並べ替えで、サブセレクト付きの更新を使用して

UPDATE SomeTable 
SET rankcol = SubQuery.Sort_Order 
FROM 
    (
    SELECT IDCol, Row_Number() OVER (ORDER BY ValueCOL) as SORT_ORDER 
    FROM SomeTable 
    ) SubQuery 
INNER JOIN SomeTable ON 
SubQuery.IDCol = SomeTable.IDCol 

私は、PostgreSQL上で同じことをやってみたとき、私はエラーメッセージが表示されます -

ERROR:テーブル名 "sometable" は、任意のヘルプは理解されるであろう

回以上指定しました。

ありがとうございます!

+0

並べ替え行と何このクエリは明らかである列(の値を設定しますしようとする)は2つの異なるものです。 –

答えて

4

明示的にSomeTableに参加する必要はありません。 :)

UPDATE SomeTable 
SET rankcol = SubQuery.Sort_Order 
FROM 
    (
    SELECT IDCol, Row_Number() OVER (ORDER BY ValueCOL) as SORT_ORDER 
    FROM SomeTable 
    ) SubQuery 
where SubQuery.IDCol = SomeTable.IDCol 

備考:Postgresはrow_numbersort_orderid_colように、小文字より良い使用、大文字と小文字を区別しないで、等

+0

それはうまくいった。ありがとう! – user558122

関連する問題