1
我有一個名爲'卡',其中有一個名爲'位置'列的表 我怎樣才能更新/設置'位置'等於每個記錄的行號,使用ROW_NUMBER )?SQL更新記錄與ROW_NUMBER()
我能夠查詢記錄,並獲得使用這種說法正確的值:
"SELECT *, ROW_NUMBER() OVER() as position FROM cards"
所以,我想這樣做,但它已經在數據庫中更新新值。
我有一個名爲'卡',其中有一個名爲'位置'列的表 我怎樣才能更新/設置'位置'等於每個記錄的行號,使用ROW_NUMBER )?SQL更新記錄與ROW_NUMBER()
我能夠查詢記錄,並獲得使用這種說法正確的值:
"SELECT *, ROW_NUMBER() OVER() as position FROM cards"
所以,我想這樣做,但它已經在數據庫中更新新值。
讓我假設cards
都有一個主鍵。然後你可以使用join
:
update cards c
set position = c2.seqnum
from (select c2.*, row_number() over() as seqnum
from cards c2
) c2
where c2.pkid = c.pkid;
我要指出的是,over()
看起來很奇怪,但Postgres的確允許它。通常會包含order by
條款。
SQLite不支持'ROW_NUMBER()',所以這個問題纔有意義Postgres的。 –