【问题标题】:Group MySQL Result by column按列分组 MySQL 结果
【发布时间】:2012-08-08 03:46:43
【问题描述】:

我在将 MySQL 结果输出到 HTML 时遇到问题。我有一个 MySQL 结果,它返回:

| title        | category_name | from_where |
---------------------------------------------
| Title num 1  | Journal       | iidl_file  |
---------------------------------------------
| Title num 2  | Books         | iidl_file  |
---------------------------------------------
| Title num 3  | Announcement  | iidl_post  |
---------------------------------------------
| Title num 4  | News          | iidl_post  |
---------------------------------------------

我怎样才能像这样在 HTML 中预览这些数据:

iidl_file
 - Title num 1 (Journal)
 - Title num 2 (Books)

--------------------------

iid_post
 - Title num 3 (Announcement)
 - Title num 4 (News)

【问题讨论】:

  • 那是显示问题,与mysql本身无关。
  • 使用 %2 == 0 来破坏数据..在 mysql 中使用 LIMIT ..选择是你的 ....试一试兄弟,做一些研发,然后提供给我们代码:)

标签: php mysql arrays multidimensional-array


【解决方案1】:

这就是我会做的:

SELECT `title`, `category_name`, `etc` FROM `table_name` ORDER BY `from_where`;

如果您有很多记录,那么确保from_where 列上有索引会让您受益匪浅。

这是一些伪代码:

$groups = array();
foreach ($rows as $row) {
    $from_where = $row['from_where']
    if (! isset($groups[$from_where])) {
        $groups[$from_where] = array();
    }
    $groups[$from_where][] = $row;
}

现在您的$groups 将包含由from_where 列键入的数组。

这样做,您实际上不必必须甚至在查询中发出 ORDER BY。

【讨论】:

    【解决方案2】:

    只是一个想法,只需使用普通的mysql结果循环和这样的代码,未经测试但希望它会有所帮助

    $from_all = array();
    $from_all[$from_where][] = array('title'=>$title,'category_name'=>$category_name)
    

    然后

    foreach($from_all as $from_where=>$array) {
        echo $from_where
        foreach($array as $row) {
            echo $row['title'];
            echo $row['category_name'];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2016-11-27
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多