首页 > 解决方案 > 如何从底部到顶部对列进行排序?

问题描述

我有一个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 个条目。

标签: sqlsqlite

解决方案


听起来你想要的是一个Clustered Index。将它放在列位置上,行将按磁盘上的该列进行物理排序。在这种情况下,升序或降序无关紧要。

CREATE CLUSTERED INDEX name ON videos (position);

推荐阅读