2010-05-15 46 views
0

如何订购此结果?从MySQL中选择类似的值并命令结果

$range = 5; // you'll be selecting around this range. 
$min = $rank - $range; 
$max = $rank + $range; 
$limit = 10; // max number of results you want. 

$result = mysql_query("select * from table where rank between $min and $max limit $limit"); 

while($row = mysql_fetch_array($result)) 
{ 
    echo $row['name']."&nbsp;-&nbsp;".$row['rank']."<br>"; 
} 
+0

请使用“101010”-Icon格式化您的代码。 – Simon 2010-05-15 07:57:06

+0

是不是应该是ORDER BY? – 2010-05-15 07:59:07

回答

0

使用 “ORDER BY” - 子句:

mysql_query("select * from table where rank between $min and $max order by rank limit $limit"); 

这一点,从您的订购结果大值。 使用"order by rank desc"以后代方向排序。 (大 - >小)

+0

感谢,但我怎么能在中间显示的搜索查询和上面休息和下面的例子是: SEACH是马修 和结果应该是下面显示: - 约翰 - 26 乔 - 25 斯图尔特 - 27 马修 - 25 kelly - 24 brandon -23 magy - 22 .......等等。 – mathew 2010-05-15 08:31:45

+0

使用2个选择子句:查找“等级 - 范围”和“等级”之间的值,另一个查找“等级+ 1”和“等级+范围”之间的值。以升序排列第一,以降序排列第二。 – Simon 2010-05-15 08:52:03

+0

OOPS我不好,我得到了答案。实际上它比这更容易。 唯一需要做的就是 “select * from $ where $ min $ max order by rank desc limit $ limit” 那就是... – mathew 2010-05-15 09:19:07

2
$result = mysql_query(
    "select * from table where rank between $min and $max " . 
    "order by rank asc limit $limit" 
); 
+0

使用+1。使其可读。 – egrunin 2010-05-15 08:01:29