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的。 –