按特定列值对所有项进行分组

aurhwmvo  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(300)

我在mysql中有一个如下表:

cname | vname | curl
---------------------
A     | 1     | url1
A     | 2     | url2
B     | 1     | url3
B     | 3     | url4
C     | 2     | url5
C     | 3     | url5
C     | 4     | url6
D     | 2     | url7

我想把结果显示如下:

1  |  2  |  3  |  4
-------------------
A  |  A  |  B  |  C
B  |  C  |  C  |
   |  D  |

简而言之,我试图通过vnames展示所有cnames组。
我在codeigniter中尝试了以下代码:

$this->db->distinct();
$this->db->select('vname, cname, curl');
$this->db->from('tablename');
$this->db->order_by('cname');
$this->db->group_by('vname');
$res = $this->db->get();
if($res->num_rows()>0)
    var_dump($res->result());

由于 var_dump() ;
请为这个问题提供一个解决方案。

1cosmwyk

1cosmwyk1#

使用 GROUP_CONCAT ```
$this->db->select('vname,GROUP_CONCAT(cname SEPARATOR ",") as cname');
$this->db->from('tablename');
$this->db->group_by('vname');
$res = $this->db->get();

输出:

+--------+--------+
| vname | cname |
+--------+--------+
| 1 | A,B |
| 2 | A,C,D |
| 3 | B,C |
| 4 | C |
+--------+--------+

相关问题