2013-12-12 74 views
0

我最近創建了一個包含特定數據的新表 - 它將每天下載一次數據,並將按照 的順序發佈,但現在發生了一些奇怪的事情。我在php的sql語法中找不到任何錯誤,而且我也爲我的其他表執行相同的操作 - 完美無缺! 像往常一樣,我有一個唯一的主鍵,併爲每個新值遞增。 但現在 - 突然 - 三一天突然數據庫 店上面的最後一個值新行未插入升序 - MYSQL

我不明白什麼是錯的這個值。我不知道它是如何配置服務器或在我的語法錯誤嗎?正如我上面提到的 - 我的其他表工作和實現相同的語法。我在各種論壇上看到的 是從不保證數據按順序存儲如果你沒有指定這個。但是我找不到結合INSERT INTO和OR​​DER BY的任何語法。正如我所說 - 我有很多其他表,它們在基本相同的代碼下運行,並按照升序存儲我想要的數據。

我附上要顯示的圖片。可以看出,該服務器將新行的最後一個和第一之間 -

所以我的問題

1,爲什麼會出現這種情況? 2我該如何解決這個問題。

可以以某種方式聯合INSERT INTO語法和ORDER BY ???

$query = "insert into table (null, '$date', '$value1', '$value2'); 

enter image description here可以SE的最後一行存儲在

之間
+1

您不應該對SQL數據庫中行的排序做任何假設:如果順序很重要,那麼您需要在SELECT語句中用ORDER BY明確指出這一點。 ORDER BY不適用於INSERT,因爲它是數據庫作業只是簡單地存儲您請求的數據,而您的作業是按照您僅在SELECTion上規定的順序檢索數據 –

+0

@Mark Ba​​ker好的,謝謝! - 但只在選擇語句?我想從一開始就把新數據放在表格中(asc。order)。 – user2991252

+2

數據庫的要點在於數據庫最清楚如何存儲數據;你知道你喜歡__看到它_有序,但是__看到它___你需要選擇它,因此ORDER BY與SELECT關聯 –

回答

2

你幾乎回答了你自己的問題。

我看到的各種論壇是一個從來都不是保證數據存儲,以便

這是真實的。如果您需要以特定的順序從數據庫中檢索數據,那麼您應該使用ORDER BY作爲您的數據。