我在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()
;
请为这个问题提供一个解决方案。
1条答案
按热度按时间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 |
+--------+--------+