我有一个表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个要重新记录的条目。
答案 0 :(得分:0)
听起来像我想要的Clustered Index。将其放在“位置”列上,行将按磁盘上的该列进行物理排序。在这种情况下,升序或降序无关紧要。
CREATE CLUSTERED INDEX name ON videos (position);