我有一个看起来像这样的表:
id | cat_id | value1 | value2 | value3
------------------------------------------------
1 | cat1 | a | b | c
2 | cat1 | b | e | h
3 | cat2 | n | r | c
4 | cat2 | h | d | m
5 | cat2 | k | d | a
6 | cat3 | g | d | m
我想编写一个返回类似内容的Mysql查询:
cat1 =>
[1] =>
1,
a,
b,
c,
[2] =>
2,
b,
e,
h,
cat2 =>
[1] =>
3,
n,
r,
c,
[2] =>
4,
h,
d,
m,
[3] =>
5,
k,
d,
a,
cat3 =>
[1] =>
6,
g,
d,
m,
有可能吗?
答案 0 :(得分:0)
也许你想要像
这样的东西$result =
array (
'cat1' => array (
array ( 1,'a','b','c' ),
array ( 2,'b','e','h' )
),
'cat2' => array (
array( 3,'n','r','c' ),
array( 4,'h','d','m' ),
array( 5,'k','d','a' )
),
'cat3' => array (
array( 6,'g','d','m' )
)
);
作为php数组?
在这种情况下,您可以使用类似
的方式收集值$q=mysqli_query('SELECT cat_id,id,value1,value2,value3 FROM tbl
ORDER BY catid,id');
while ($r=mysqli_fetch_row($q)) $result[array_shift($r)][]=$r;
在while循环中,第一列(catid
)将从结果数组中取出(使用array_shift($r)
),并用作子数组的键以进一步收集值。 []
之后的$result[array_shift($r)]
将启动此(新)子数组,并将带有剩余列$r
的向量id,value1,value2,value3
推入其中。
答案 1 :(得分:0)
尝试执行以下查询:
mysql> SELECT id, cat_id, value1, value2, value3
FROM mytable GROUP BY id ORDER BY cat_id ASC