2010-05-19 66 views
3

有沒有辦法改變從數據庫讀取的訂單數據?你知道,默認順序是它們是從插入到最新的第一個數據中讀取的,所以有辦法將它更改爲latest-> first?如何確定訂單數據是從MYSQL數據庫中讀取的?

+0

你的意思是像Order By? – Don 2010-05-19 14:37:04

+0

@Don - OP詢問如何更改默認訂單(您通過*而不是*使用'order by'獲得的訂單) – Matt 2010-05-19 14:42:54

回答

1

添加時間戳列到表(或者,如果你的ID自動遞增,你也可以使用),並做ORDER BY DESC

默認情況下進入的順序應該被視爲任意。向用戶顯示數據時始終使用ORDER BY以避免混淆是一個好主意。

3

您無法更改默認的訂單。這種行爲甚至沒有被服務器指定,它由表引擎指定。

例如,不管你插入InnoDB什麼命令,它會一直拖欠的PRIMARY KEY秩序,這是不同的行爲與MyISAM

+0

爲什麼downvote? – Matt 2010-05-19 14:41:52

5

默認順序是,他們是從插入第一個數據讀

最新不,這是不正確的。默認順序取決於很多事情,不同的執行計劃可能會導致不同的順序。如果您不使用ORDER BY,則訂單不確定。這意味着你不應該依賴它以插入順序返回行,因爲這並不總是如此。

如果你想依靠訂單,你必須添加一個訂單子句。如果你想回到最近插入的第一再添加一列insert_date行,插入和添加到您的查詢時使用的值NOW()

ORDER BY `insert_date` DESC 

正如其他人也指出,如果你有一個自動增加主鍵然後你可以通過它來訂購。

1

正如其他人指出:「ORDER BY」在您的SQL語句,雖然你的數據集將需要一個時間戳字段是用添加了新的數據集時的當前日期/時間設置。

然後,您應該能夠從第一次下訂單數據將持續,或從後到前(ORDER BY myTimestampField DESC)

1

SELECT * FROM {表名} ORDER BY ID DESC以上

假設您有一個ID字段隨每個插入而遞增。您可能還有一個可在ORDER BY語句中使用的'CreateDate'類型字段。

ORDER BY默認爲升序排列,因此要獲得支持最新>首先,使用DESC。