SQL - 更新 TABLE 和 ORDER BY?

SQL - UPDATE TABLE and ORDER BY?

所以我有一个无序的 table movement,其中包含列 timestampxy。我想按 timestamp 排序,然后更改并保存 table 以使所有行按时间戳排序。

我想使用 UPDATE TABLE 但我不确定查询的外观...例如,我有这个:

UPDATE movement 
SET ????? 
ORDER BY timestamp; 

我不想设置任何东西,我只想更改 table 的顺序。我需要为我将要编写的另一个查询执行此操作,但事实是这个 table 非常大,我需要逐步分解,以便以后的性能不会太差。那我该怎么做呢?我发现 this SO post 解决了类似的问题,但我想知道是否有另一种方法可以做到这一点而不是使用另一个 table,因为正如我所说,这个 table 非常大(数百万行),重新复制 table 需要很长时间。

表格本身没有顺序;您不必将它们更新为任何特定顺序。

你所做的就是从 table 中选择你 SELECT 的顺序。然后它可以按照您选择的任何顺序!

示例:

SELECT * FROM movement  
ORDER BY timestamp; 

但是你可能想在其他地方:

SELECT * FROM movement  
ORDER BY timestamp DESCENDING; 

您不能在 UPDATE 语句中使用 ORDER BYORDER BY 只能与 SELECT 语句一起使用。同样,不需要按特定顺序存储记录,因为您可以使用 SELECT statement like

按特定顺序显示记录
select * from movement 
order by timestamp

关系数据库table表示无序集。没有排序 table 的语法,只是因为没有 table 中行的顺序这样的概念。当您在没有显式 order by 子句的情况下发出查询时,数据库可能会 return 以它认为合适的任何顺序向您提供行,这可能会受到它们插入和写入磁盘的顺序的影响,它们存在于某些内存缓存、索引或许多其他实现细节中。

如果要查询按时间戳排序的 table 行,只需在 order by 子句中明确说明即可:

SELECT   *
FROM     `movement`
ORDER BY `timestamp`

其实是可以的。这是 MySQL 格式...更新是为了编辑已经存在的信息。如果要进行更直接的更改,请根据语法使用 ALTER 或 MODIFY。

ALTER TABLE movement 
ORDER BY timestamp;