我有一个表videos
与列id
| position
| title
现在我想以永久的方式从列末端到底部对列position
进行排序,例如UPDATE
。我可以手动更改,但有超过460行,我必须手动更新,这真的很烦人。
我已经试过了
SELECT position FROM videos ORDER BY position + 0 asc;
这显示了所需的结果,但我不知道如何使其成为永久性的变化。如果我使用
UPDATE videos SET position = (SELECT position FROM videos ORDER BY position + 0 asc);
这会将列的行更改为一个值。
该表看起来像这样
Id | position | title
---------------------------
tz7e | 3 | title1
-cQ6 | 4 | title2
Q1L3 | 1 | title3
y456 | 2 | title4
V2n4 | 5 | title5
p76b | 7 | title6
98kN | 6 | title7
但它希望拥有它
Id | position | title
---------------------------
tz7e | 7 | title1
-cQ6 | 6 | title2
Q1L3 | 5 | title3
y456 | 4 | title4
V2n4 | 3 | title5
p76b | 2 | title6
98kN | 1 | title7
但是position
专栏中的460个条目我要重新投入。
听起来像你想要的是Clustered Index。将它放在列位置上,行将按磁盘上的该列进行物理排序。在这种情况下,上升或下降的顺序无关紧要。
CREATE CLUSTERED INDEX name ON videos (position);