2012-09-11 86 views
1

每當完成如 "select * from table where userid=xx"這樣的查詢時,mysql會將這些值從 第一行讀取到表的最後一行。如何從mysql的最後一行選擇到第一行

但我想從最後到第一次選擇,以便最近更新的值首先顯示在結果中。我不能做"select * from table where userid=xx order by time DESC",因爲表中沒有時間列。 我只希望最近更新表中的項目首先顯示。

+1

是否有更新時,作了一個跟蹤表什麼? – andrewsi

+1

你有一個自動遞增的ID嗎? – Tchoupi

+0

數據庫中是否存在行的基本次序,但您自己定義的除外?我不認爲行順序在數據庫規範中是必需的,儘管我可能是錯的。 –

回答

0

如果您有任何自動遞增字段,您可以按該desc進行排序。

您必須提供一個專欄來確保結果。所以你將不得不改變你的表格結構或者決定要點什麼。

一劈將是呈現到一個數組中的順序要提取的數據,然後開始突然離開該陣列的底部。

+0

陣列解決方案的IDS工作對我來說 – phpuser

0

你要麼必須有一個要作爲排序依據時間戳,或自動增量ID,或其他一些列。

僅僅因爲您在不使用ORDER BY子句時以某種順序從數據庫獲取行,並不表示它們將按照該順序返回。它也不意味着結果集中的任何順序。你需要一個明確的領域,你可以使用ORDER BY,或者你不能做你想做的事情。

+0

+1對不起,我不能給票,因爲表低於15代表 – phpuser

0

一些黑客則可以針對此做,如果你沒有,你可以依靠列:

SELECT * FROM (SELECT *,(@x:[email protected]+1) default_ordering FROM `table_name`, (SELECT @x:=0) t2) any_name ORDER BY default_ordering DESC 
1
$result= mysql_query("SELECT 
(SELECT column FROM table WHERE [condition] ORDER BY column LIMIT 1) as 'first', 
(SELECT column FROM table WHERE [condition] ORDER BY column DESC LIMIT 1) as 'last'"); 

$row=mysql_fetch_array($result); 
echo $row['first']; 
echo $row['last']; 
+0

請提供您的回答,並提供明確的描述。不要編寫代碼,給出關於您共享的代碼的解釋,以便其他人也可以理解,這會有所幫助。我請求你閱讀FAQ部分,以便有效地使用Stack Overflow。 –