【问题标题】:Sorting mysql output on a different field with PHP使用PHP对不同字段上的mysql输出进行排序
【发布时间】:2013-10-13 08:48:03
【问题描述】:

我目前有以下代码输出数据库中名称的唯一出现次数以及名称(对于最常见的 100 个名称)。代码运行良好,输出如下所示:

Smith       71
Ryan        49
White       39
Brown       23

我想在该列表旁边的表格中重复该列表,并将输出按名称的字母顺序排序。

Smith       71             Brown     23
Ryan        49             Ryan      49
White       39             Smith     71
Brown       23             White     39

请问有什么方法可以作为 mysql 搜索的一部分,或者我是否需要在执行第一个循环时将值存储在数组中,然后对数组进行排序和输出?

如果是后者,任何人都可以建议有效的代码来做到这一点。

 $query2 = "SELECT family_name, COUNT(*) as count FROM nametable 
            WHERE locationkey = $location
            GROUP BY family_name ORDER BY count DESC";
 $table2 = mysql_query($query2);
 $count2 = mysql_num_rows($table2);
 $tot = 0;
 echo '<table>';
 while ($tot < $count2 && $tot < 100) {
     $rec2 = mysql_fetch_array($table2);
     echo '<tr><td>',$rec2[0],'</td><td width="40">&nbsp;</td><td>',$rec2[1], '</td></tr>';
     $tot++;
 }
     echo '</table>';

【问题讨论】:

    标签: php mysql arrays sorting


    【解决方案1】:

    您可能没有提到的唯一方法是进行两次查询调用,只是使用不同的 ORDER BY,但是您可以使用所有相同的代码(可能在函数中)绘制表格。就像将整个代码块放在一个接受变量的函数中...... $orderBy。然后,您所做的唯一更改是 $query2 定义,只需以“ORDER BY $orderBy”结束即可;有意义吗?

    【讨论】:

    • 确实有道理。我只是认为数组选项可能会减少服务器上的负载,因为数据库大约有 750,000 条记录,但我通常会选择 500 条记录。虽然相关字段已编入索引。
    猜你喜欢
    • 2016-10-28
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多