通过使用SQL查询递增计数器来更新列中的值

时间:2015-10-30 14:11:03

标签: sql sqlite

我有一个像这样的表结构:

-----------------------------------
ID  |    NAME   |   SORTED_ID
-----------------------------------
1   |    B      |      
2   |    D      |
3   |    A      | 
4   |    C      |

使用单个SQL查询我希望根据排序顺序更新SORTED_ID列。

-----------------------------------
ID  |    NAME   |   SORTED_ID
-----------------------------------
1   |    B      |      2
2   |    D      |      4
3   |    A      |      1
4   |    C      |      3

我该怎么办?

1 个答案:

答案 0 :(得分:0)

在SQLite中,这有点痛苦。以下是使用相关子查询的一种方法:

update t
    set sorted_id = (select count(*)
                     from t t2
                     where t2.name <= t.name
                    );

注意:这对于中等桌子(超过一千行左右)来说是很昂贵的。