mysql - 如何根据MySQL表中的时间戳重置主键?

标签 mysql sorting primary-key

我知道我可以通过这种方式重置主键:

ALTER TABLE `users` DROP `id`;
ALTER TABLE `users` AUTO_INCREMENT = 1;
ALTER TABLE `users` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

但我想知道如何根据我的时间戳列中的时间戳来调整它以应用主键,即时间戳最旧的行获得值 1,下一个最旧的行获得值 2,等等。

显示创建表的输出

CREATE TABLE `tracks` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
 `from_user` varchar(50) NOT NULL,
 `source_filename` varchar(80) NOT NULL,
 `uploaded_page` varchar(50) NOT NULL,
 `operating_system` varchar(50) NOT NULL,
 `browser` varchar(50) NOT NULL,
 `os_browser_version` varchar(200) NOT NULL,
 `title` varchar(100) NOT NULL,
 `artist` varchar(60) NOT NULL,
 `album` varchar(120) NOT NULL,
 `genre` varchar(120) NOT NULL,
 `format` varchar(10) NOT NULL,
 `bitrate` mediumint(9) NOT NULL,
 `conversion_needed` tinyint(1) NOT NULL COMMENT 'if not mp3, or higher than 192kbps',
 `conversion_successful` tinyint(1) NOT NULL,
 `art_extracted` tinyint(1) NOT NULL,
 `art_location` varchar(200) NOT NULL,
 `file_location` varchar(200) NOT NULL,
 `status` varchar(500) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=96 DEFAULT CHARSET=utf8

最佳答案

创建一个名为 users2 的新表,其结构与 users 相同:

CREATE TABLE users2 LIKE users;

然后运行这条语句:

INSERT INTO users2
(col1, col2, ... coln)
SELECT col1, col2, ... coln
FROM users
ORDER BY your_timestamp

对于您的特定表:

INSERT INTO tracks2
(`timestamp`,`from_user`,`source_filename`,`uploaded_page`,`operating_system`,`browser`,`os_browser_version`,`title`,`artist`,`album`,`genre`,`format`,`bitrate`,`conversion_needed`,`conversion_successful`,`art_extracted`,`art_location`,`file_location`,`status`)
SELECT `timestamp`,`from_user`,`source_filename`,`uploaded_page`,`operating_system`,`browser`,`os_browser_version`,`title`,`artist`,`album`,`genre`,`format`,`bitrate`,`conversion_needed`,`conversion_successful`,`art_extracted`,`art_location`,`file_location`,`status`
FROM tracks
ORDER BY timestamp

关于mysql - 如何根据MySQL表中的时间戳重置主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640483/

相关文章:

javascript - 如何在MYSQL中添加多个列并存储在不同的输出中?

mysql - 无法通过多个连接获取正确的数据

javascript - JQuery UI 可排序 : Save keys with sort order

java - 我的树形图在排序后中断,因为 "comparator used for the treemap is inconsistent with equals"

mysql - 我需要自动增加 MySQL 中不是主键的字段

MySQL:优化无主键的表(索引、外键)

mysql - 如何在 mysql 查询中过滤确定数量的行?

php - 数据库中的空值

delphi - 如何使用多个比较器在 TObjectList<> 中进行类似于 Excel 的按 A 排序,然后按 B 排序

sql - 当有外键约束时更改主键类型