1

每当 "select * from table where userid=xx"完成类似的查询时,mysql 就会从表的第一行到最后一行获取这些值。

但我想从最后一个到第一个进行选择,以便最近更新的值首先显示在结果中。

我不能这样做"select * from table where userid=xx order by time DESC",因为表中没有时间列。我只想首先显示表中最近更新的项目。

4

4 回答 4

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'];
于 2017-09-27T12:03:09.140 回答
0

如果您有任何自动递增字段,则可以按该 desc 排序。

为了保证结果,您必须提供要排序的列。因此,您将不得不更改表结构或决定订购什么。

一个技巧是将数据按照呈现到数组中的顺序拉入,然后开始从该数组的底部弹出。

于 2012-09-11T17:04:49.467 回答
0

您要么必须具有时间戳、自动增量 ID,要么必须具有要排序的其他列。

仅仅因为您在不使用子句时以特定顺序从数据库中获取行ORDER BY,并不意味着它们可以保证以该顺序返回。它也不意味着结果集中的任何顺序。您需要一个可以使用的明确字段ORDER BY,否则您无法做您想做的事情。

于 2012-09-11T17:05:56.420 回答
0

如果您没有可以依赖的列,您可以为此做一些技巧:

SELECT * FROM (SELECT *,(@x:=@x+1) default_ordering FROM `table_name`, (SELECT @x:=0) t2) any_name ORDER BY default_ordering DESC
于 2012-09-11T17:21:47.430 回答