Mysql表:按日期时间列的顺序插入一个升序数字(1到[总行数])的列

时间:2015-11-25 07:51:35

标签: mysql datetime

Mysql:我有一个带有ID列(主键),datetime列等的表。让我们说1000行。 我不想更改ID,但添加另一列并使用1到1000的计数填充它,使得具有最早日期时间的行得到" 1",第二个" 2" ......以及最新的" 1000"。

1 个答案:

答案 0 :(得分:2)

像草莓已经问过,为什么?我能想到的唯一理由是,您最终想要替换当前的主键,但即使这样也没有必要。您应该避免存储冗余数据。当使用datetime列确定行的顺序时,不需要引入第二列来执行此操作。

无论如何,这是你如何做到的。首先添加新列。

ALTER TABLE your_table ADD COLUMN new_column int;

UPDATE语法的manual中,你得到了这个:

  

单表语法:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

所以你只需要初始化一个变量并在增加它时更新你的表。

SET @my_increment := 0;
UPDATE your_table 
SET new_column = @my_increment := @my_increment + 1
ORDER BY your_datetime_column;