2

我有一个 MySQL 表,其中包含大约 1700 万条记录和一个auto_increment字段。结构是这样的:

+--------+-------------------+-----------+
| ID     | Year1             |  Year2    |
+--------+-------------------+-----------+
| 1      | 2001              | 2         |
| 2      | 2001              | 1         |
| 3      | 1999              | 3         |
| 4      | 2004              | 2         |
+--------+-------------------+-----------+

我想通过更改auto_incrementID来重新排序整个表的物理结构,以便在按升序排序时匹配Year1和列。Year2像这样的东西。。

+--------+-------------------+-----------+
| ID     | Year1             |  Year2    |
+--------+-------------------+-----------+
| 1      | 1999              | 3         |
| 2      | 2001              | 1         |
| 3      | 2001              | 2         |
| 4      | 2004              | 2         |
+--------+-------------------+-----------+

这可以通过 MySQL 中的查询实现,还是我应该使用 PHP 和循环等?

更新 用例是这样的:我拥有的实际数据以特定模式存储。我不希望最终用户识别模式(2001,然后是 2001,然后是 1999 等)。因此,我想以标准的排序方式重新排列数据。

此表没有外键。

4

1 回答 1

2

首先备份你的数据库

与其重新安排您的实际表,不如创建一个新表并从旧表中插入值。像这样:

使用自动增量,主键创建表

CREATE TABLE Table2
    (`ID` int auto_increment primary key, `Year1` int, `Year2` int)
;

插入 withSELECT语句

INSERT INTO Table2
       (`Year1`, `Year2`)
SELECT Year1, Year2
FROM Table1
ORDER BY Year1, Year2;

看到这个 SQLFiddle

于 2013-05-03T11:40:11.763 回答