我具有以下表结构:
+------------------------+
| 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;
}