簡體   English   中英

SQL-UPDATE TABLE和ORDER BY?

[英]SQL - UPDATE TABLE and ORDER BY?

所以我有一個無序的表movement ,它具有列timestampxy 我想按timestamp排序,然后更改並保存表以使所有行按時間戳排序。

我想使用UPDATE TABLE但是不確定查詢的外觀...例如,我有以下內容:

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

我不想設置任何東西,我只想更改表的順序。 我需要對要編寫的另一個查詢執行此操作,但事實是該表非常大,我需要分步進行操作,以免稍后性能不佳。 那我該怎么做呢? 我發現 SO帖子解決了類似的問題,但我想知道是否還有另一種方法可以代替使用另一個表,因為正如我所說,該表非常大(數百萬行),因此重新復制該表將花費很多時間很長時間。

表格本質上並沒有順序。 您不必將它們更新為任何特定順序。

您要做的是從表中選擇選擇的順序。 然后可以按照您選擇的任何順序!

例:

SELECT * FROM movement  
ORDER BY timestamp; 

但是在其他地方,您可能想要:

SELECT * FROM movement  
ORDER BY timestamp DESCENDING; 

您不能在UPDATE語句中使用ORDER BY ORDER BY應該僅與SELECT語句一起使用。 同樣,無需按特定順序存儲記錄,因為您可以使用SELECT statement按特定順序顯示記錄,例如

select * from movement 
order by timestamp

關系數據庫表表示無序集。 沒有用於對表進行排序的語法,僅僅是因為沒有諸如表中的行順序之類的概念。 當您在沒有明確的order by子句的情況下發出查詢時,數據庫可能會以合適的任何順序將行返回給您,這可能受到行插入和寫入磁盤的順序,它們在某些內存緩存中的存在,索引或其他許多實現細節。

如果要查詢按其時間戳排序的表行,只需在order by子句中明確聲明它即可:

SELECT   *
FROM     `movement`
ORDER BY `timestamp`

實際上是可能的。 這是MySQL格式...更新用於編輯已經存在的信息。 如果要進行更直接的更改,請根據語法使用ALTER或MODIFY。

ALTER TABLE movement 
ORDER BY timestamp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM