[英]SQL - UPDATE TABLE and ORDER BY?
所以我有一個無序的表movement
,它具有列timestamp
, x
和y
。 我想按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.