我需要将整个id表从最前面变成最后面。例如我在一张桌子上有10排。我需要按日期时间将第10个订单转换为第1个,将第1个订单转换成第10个。此外,结构和数据仍然保留。
我不知道怎么问这样的问题。很抱歉,那些我的问题在你看来很愚蠢或尝试较少的人
SRC表格
+----+------+-------------------+
| id | item | dtime |
+----+------+-------------------+
| 1 | J | 2017-10-10 10:10 |
+----+------+-------------------+
| 2 | I | 2017-10-10 10:09 |
+----+------+-------------------+
| 3 | H | 2017-10-10 10:08 |
+----+------+-------------------+
.
.
.
+----+------+-------------------+
| 10 | A | 2017-10-10 10:01 |
+----+------+-------------------+
预计
+----+------+-------------------+
| id | item | dtime |
+----+------+-------------------+
| 1 | A | 2017-10-10 10:01 |
+----+------+-------------------+
| 2 | B | 2017-10-10 10:02 |
+----+------+-------------------+
| 3 | C | 2017-10-10 10:03 |
+----+------+-------------------+
.
.
.
+----+------+-------------------+
| 10 | J | 2017-10-10 10:10 |
+----+------+-------------------+
如果我理解正确,您所拥有的是一个导入不正确的导入数据表,无论出于何种原因,您都需要重新导入数据以生成新的标识符。(尽管你的用户输出真的不应该太依赖标识符。听起来你滥用了系统标识符。)但原始数据源已经不见了,你需要从现有的表中重新导入。
虽然我仍然认为高度怀疑您实际上可能不需要这样做(尤其是如果其他数据已经依赖于已识别的记录),但在技术层面上没有太多问题。
首先,创建一个与现有表具有相同结构的新表。然后,您可以将现有表中选定的一组数据插入到新表中。简单如:
INSERT INTO NewTable (item, dtime)
SELECT item, dtime FROM OldTable ORDER BY dtime
新表中的AUTOINCREMENT
标识符将生成新的id
值。然后你可以放下那张旧桌子。
如有必要,请将新表重命名为原始表的名称。