2012-09-11 85 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。 –