我有一个包含auto_increment
字段的大约17,000条记录的MySQL表。结构是这样的:
+--------+-------------------+-----------+
| ID | Year1 | Year2 |
+--------+-------------------+-----------+
| 1 | 2001 | 2 |
| 2 | 2001 | 1 |
| 3 | 1999 | 3 |
| 4 | 2004 | 2 |
+--------+-------------------+-----------+
我希望通过更改auto_increment
ID来重新排序整个表的物理结构,以便按升序排序时匹配Year1
和Year2
列。像这样......
+--------+-------------------+-----------+
| ID | Year1 | Year2 |
+--------+-------------------+-----------+
| 1 | 1999 | 3 |
| 2 | 2001 | 1 |
| 3 | 2001 | 2 |
| 4 | 2004 | 2 |
+--------+-------------------+-----------+
这可以通过MySQL中的查询来实现,还是应该使用PHP和循环,等等?
更新 用例是这样的:我拥有的实际数据以特定模式存储。我不希望最终用户识别模式(2001年,然后是2001年,然后是1999年等)。因此,我想以标准的,有条理的方式重新排列数据。
此表没有外键。
答案 0 :(得分:2)
首先备份数据库
不是重新安排实际的表,而是创建一个新表并插入旧表的值。像这样:
使用自动增量创建表,主键
CREATE TABLE Table2
(`ID` int auto_increment primary key, `Year1` int, `Year2` int)
;
使用SELECT
声明
INSERT INTO Table2
(`Year1`, `Year2`)
SELECT Year1, Year2
FROM Table1
ORDER BY Year1, Year2;