Mysql组的值相同

时间:2015-08-07 06:52:29

标签: php mysql sql database

我有一个看起来像这样的表:

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,


有可能吗?

2 个答案:

答案 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