[英]How to select from last to first row in mysql
每當執行"select * from table where userid=xx"
這樣的查詢時,mysql就會從表的第一行到最后一行獲取這些值。
但我想從最后到第一進行選擇,以便最近更新的值首先顯示在結果中。
我無法執行"select * from table where userid=xx order by time DESC"
因為表中沒有時間列。 我只希望首先顯示表中最近更新的項目。
$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'];
如果您有任何自動遞增字段,則可以按該desc排序。
您必須提供一個要訂購的列,以保證結果。 因此,您將不得不更改表結構或決定要訂購的商品。
黑客可以按照顯示的順序將數據提取到陣列中,然后從該陣列的底部彈出。
您要么必須具有時間戳記,要么必須具有自動增量ID,或者要具有其他排序依據。
僅僅因為您在不使用ORDER BY
子句時從數據庫中以特定順序獲得行,並不意味着一定可以按該順序返回它們。 它也不意味着結果集中的任何順序。 您需要一個可用於ORDER BY
的確定性字段,否則您將無法做您想做的事情。
如果沒有專欄,可以依靠一些技巧:
SELECT * FROM (SELECT *,(@x:=@x+1) default_ordering FROM `table_name`, (SELECT @x:=0) t2) any_name ORDER BY default_ordering DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.