我具有以下表结构:

+------------------------+
| id |  name  | category |
+------------------------+
|  1 | name_1 |    cat_1 |
|  2 | name_2 |    cat_2 |
|  3 | name_3 |    cat_1 |
|  . |   .    |      .   |
|  . |   .    |      .   |
|  n | name_n |    cat_k |
+------------------------+


“ n”是表的总行,“ k”是任意数。我的问题是,有什么方法可以使SQL查询检索按类别分组的行?我的意思是有可能得到这种结构?

array(
    "cat_1" => array(
                     "name_1", "1",
                     "name_3", "3",
               ),
    "cat_2" => array(
                     "name_2", "2",
                      some rows ....
               ),
    ...
    "cat_k" => array(
                     some rows....
               ),
)


如果有任何方法,请给我一些关键字,而不是完整的解决方案。

最佳答案

您不能真正在单个查询中执行此操作,因为仅mysql无法产生多维数组,但是使用PHP几乎是微不足道的。基本上,这就是您要执行的操作:

$cats = array();
while ($row = $result->fetch()) {
    if (!isset($cats[$row->category])) {
        $cats[$row->category] = array();
    }
    $cats[$row->category][] = $row->name;
}

09-25 20:03
查看更多