Sql 如何对表列重新编号

Sql 如何对表列重新编号,sql,sqlite,Sql,Sqlite,我有一个按列ID排序的SQLite表,但我需要按另一个名为RunTime的数字字段对其排序 表Pass_2看起来不错,但我需要将ID列从1重新编号。。n而不诉诸记录 SQL数据库的一个原则是,底层表对其记录没有自然或保证的顺序。使用order BY子句从表中选择时,必须指定要查看记录的顺序 您可以通过运行时使用SELECT*从_表顺序中获取所需的记录,这是在任何SQL数据库中实现这一点的正确而可靠的方法 如果希望尝试以运行时顺序获取Pass_2中的记录,可以将order BY子句添加到用于创建表

我有一个按列ID排序的SQLite表,但我需要按另一个名为RunTime的数字字段对其排序


表Pass_2看起来不错,但我需要将ID列从1重新编号。。n而不诉诸记录

SQL数据库的一个原则是,底层表对其记录没有自然或保证的顺序。使用order BY子句从表中选择时,必须指定要查看记录的顺序

您可以通过运行时使用SELECT*从_表顺序中获取所需的记录,这是在任何SQL数据库中实现这一点的正确而可靠的方法

如果希望尝试以运行时顺序获取Pass_2中的记录,可以将order BY子句添加到用于创建表的SELECT中,但请记住:不能保证以记录添加到表中的顺序获取记录


你什么时候可以按不同的顺序取回记录?当您的查询可以使用覆盖索引中的列来回答时,最有可能发生这种情况-在这种情况下,记录更有可能以索引顺序返回,而不是以任何自然顺序返回,但同样,order BY子句不保证返回结果。

如果您希望新的ID列从1开始,则使用ROW_NUMBER函数。在查询中不使用ID,而是使用此行\u编号作为ID按运行时排序。。。。这将用新计算的列替换旧的ID列

您所说的重新排序是什么意思?不从1..n引用ID列而不引用记录。?您可以对行进行排序,也可以不进行排序。很抱歉,缺少格式,该死的iPad…代码格式很难使用…编辑感谢整理这在SQLlite中可能不可用。。。不确定是否支持行号。请参见想象表中的一列,其值为“1、2、5、9、3、7…”。我想用新值“1、2、3、4、5、6…”覆盖该列。生成列表1、2、4、9、3、7的ORDER BY子句是什么?另外,请参阅本页,了解使用SQLite的隐藏rowid列作为添加到表顺序的可能代理的可能性。
CREATE TABLE Pass_2 AS
SELECT RunTime, PosLevel, PosX, PosY, Speed, ID
FROM Pass_1