2016-12-24 112 views
0

我有一個表message_pool,它只有一個屬性message。例如:刪除第一行並添加元素到最後一行iny MySQL

hello 1 
hello 2 
hello 3 

我想刪除第一行添加myValue最後一行。我基本上有兩個疑問。

$query_one = "DELETE FROM message_pool LIMIT 1"; 
$query_two = "INSERT INTO message_pool VALUES ('$myValue');" 

如果我只運行$query_one這樣的結果發生了:

hello 2 
hello 3 

如果我只運行$query_two這個結果發生了:

hello 1 
hello 2 
hello 3 
myValue 

ODLY!如果我先運行$query_one然後$query_two這個結果發生了:

myValue 
hello 2 
hello 3 

但我想這個結果得到的。

hello 2 
hello 3 
myValue 

爲什麼它把myValue第一行,但是當我運行第二個查詢獨立位置它把myValue到最後一排?

+0

這是一個非常簡單的問題嗎? – orkun

+1

除非您指定ORDER BY表達式,否則不會得到一致的結果。 SQL表通常是無序的。 –

+0

這個問題可以通過每次插入時插入時間戳來解決。有很多方法就像你可以得到最後插入的id(唯一的主鍵),然後將其加1,並將該記錄與id一起插入。每次刪除並插入。但插入時確保你從數據庫中獲得最後插入的ID。 – webDev

回答

0

只需將一個主鍵添加到您的表並將其設置爲自動增量。在每個表中使用主鍵是一個好習慣。

ALTER TABLE `message_pool` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`); 

上述查詢在您執行上述代碼後正常工作。

+0

我只添加主鍵,並且在從數據庫中檢索時,通過id對列表進行排序。我工作,謝謝。 – orkun

相關問題