2011-12-16 60 views
0

我想將以下查詢限制爲5個結果。但不僅僅是5個結果。 points的5個最低值。我怎樣才能做到這一點?將查詢限制爲查詢的5個最低值到變量的5個最低值

$side = "SELECT title, points, submissionid 
      FROM submission 
      WHERE points >= '$sidepoints' 
     ORDER BY points DESC"; 

編輯:我想points降序排列的結果。

+0

你希望在mysql中查看它們或可你只需在打印前閱讀到一個PHP數組和反向? – hackartist 2011-12-17 00:06:31

+0

@hackartist PHP – John 2011-12-17 00:07:16

+2

`array_reverse()` – Rufinus 2011-12-17 00:08:31

回答

2

嘗試用另一個查詢(子查詢)訂購您的查詢結果

SELECT * FROM (
    SELECT title, points, submissionid 
    FROM submission 
    WHERE points >= '$sidepoints' 
    ORDER BY points ASC 
    LIMIT 5 
) t ORDER BY t.points DESC 
1

如果您使用MYSQL則使用LIMIT

$side = "SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points DESC 
     LIMIT 5"; 

ansi sql使用TOP。這將用於SQL Server

$side = "SELECT TOP 5 title, points, submissionid 
      FROM submission 
      WHERE points >= '$sidepoints' 
      ORDER BY points DESC"; 
5

工作在MySQL:

$side = "SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points ASC 
     LIMIT 5"; 

編輯

您可以使用下面的PHP代碼上面的查詢,或者使用不同的SQL查詢。

PHP反向結果(未經測試)

$q = mysql_query($side); 
$results = array(); 
while($r = mysql_fetch_assoc($q)) 
{ 
    $results[] = $r; 
} 
$results = array_reverse($results); 
foreach($results as $result) 
{ 
    echo $result['points']; // etc 
} 

或SQL的方式(未經測試,以及 - 從this post中)

SELECT title, points, submissionid 
FROM (
    SELECT title, points, submissionid 
     FROM submission 
     WHERE points >= '$sidepoints' 
     ORDER BY points ASC 
     LIMIT 5 
) AS t1 ORDER BY points DESC