我有一个按列ID
排序的SQLite表。但我需要通过另一个名为RunTime
的数字字段对其进行排序。
CREATE TABLE Pass_2 AS
SELECT RunTime, PosLevel, PosX, PosY, Speed, ID
FROM Pass_1
表格Pass_2
看起来很不错,但我需要在ID
重新编号1 .. n
列,而不需要使用记录。
答案 0 :(得分:2)
SQL数据库的一个原则是基础表对其记录没有自然或保证订单。您必须使用SELECT
子句指定ORDER BY
从表中查看记录的顺序。
您可以使用SELECT * FROM your_table ORDER BY RunTime
获取所需的记录,这是在任何SQL数据库中执行此操作的正确且可靠的方法。
如果您想尝试以Pass_2
获取“be”以运行时顺序,您可以将ORDER BY
子句添加到SELECT
你用来创建表但记住:你不能保证按照它们添加到表中的顺序取回记录。
您何时可以以不同的顺序获取记录?当您的查询可以使用覆盖索引中的列来回答时,最有可能发生这种情况 - 在这种情况下,记录更有可能以索引顺序返回,而不是任何“自然”顺序(但同样,{{{ 1}}子句)。
答案 1 :(得分:0)
如果您想要从ID
开始的新1
列,请使用ROW_NUMBER()
功能。在查询中使用此ID
,而不是ROW_NUMBER() OVER(ORDER BY Runtime) AS ID....
这将使用新计算的列替换旧的ID
列