我有这样的代码:
<?php
$data = mysql_query("SELECT id FROM board") or die(mysql_error());
while($info = mysql_fetch_assoc( $data ))
{
Print " ".$info['id']." ";
myOtherQuery($info['id']);
}
function myOtherQuery($id) {
$result = mysql_query("SELECT COUNT(is_following_board_id) FROM follow WHERE is_following_board_id='$id'");
$c = mysql_result($result, 0);
}
?>
它列出了所有带有数字的ID,在上面的第二个查询中定义为$c
。
为了简单起见,我删除了代码中的HTML,但它在一个表中对齐。
我想ORDER BY
$c
,但不知道怎么做。因为它定义在select查询之后:$data = mysql_query("SELECT id FROM board")
如果我添加:$data = mysql_query("SELECT id FROM board ORDER BY '$c'")
有什么我可以添加到代码的底部,使这个订单的工作?
您希望通过聚合结果在一个查询中完成此操作:
select is_following_board_id, sum(is_following_board_id) as cnt
from follow
group by is_following_board_id
order by cnt desc;
您的方法是先获取结果,然后再获取计数。相当低效,因为SQL就是为这种类型的查询而设计的。