$res = Query("SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15");
SortArray(&$res, 'date', 'asc');
如果用言語形容,然後取數據的最後一部分,從數據庫中降序排列,而是給在升序排序的數據。
$res = Query("SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15");
SortArray(&$res, 'date', 'asc');
如果用言語形容,然後取數據的最後一部分,從數據庫中降序排列,而是給在升序排序的數據。
嘗試:
$res = Query("SELECT * FROM (SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15) ORDER BY `date` ASC");
正確的版本:SELECT * FROM(SELECT * FROM'table' ORDER BY'date' DESC LIMIT 15)as'res' ORDER BY'date' ASC – Ticksy 2012-03-25 08:35:27
可以使用功能,通過特定的按鍵排序的數組:
$res_array=array();
while($row=mysql_fetch_row($res))
$res_array[]=$row;
$new_arr = usort($res_array,"my_func");
function my_func($a, $b)
{
if ($a['date'] == $b['date']) {
return 0;
}
return ($a['date'] < $b['date']) ? -1 : 1;
}
*可能需要一些調試。接受這個想法。
他問如何在SQL中進行排序而不是PHP。 – MichaelRushton 2012-03-25 07:17:39
oops.sorry。只是從僞代碼中明白了 – lvil 2012-03-25 07:25:58
@lvil像你這樣的東西已經可用:http://pastebin.com/Q3r6t1dP – Ticksy 2012-03-25 08:13:24
而不是做一些神奇的SQL查詢,你應該選擇15第一行以降序。然後從最後讀取結果。
$statement = $pdo->query('SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15');
if (! $statement->execute())
{
throw new Exception('query failed !');
}
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
while ($row = array_pop($data))
{
var_dump($row);
}
你的問題很混亂。你只是想按升序對15個元素進行排序,或者你想按降序排列所有數據,但是按升序對前15個結果進行排序? – 2012-03-25 08:20:13
按升序排序選擇最後15個條目。 – Ticksy 2012-03-25 09:13:22