sql合并多条记录为一条

蕃薯哥哥 发布于 2015/03/19 10:34
阅读 2K+
收藏 0
obj_id    path                 type       group_num  
------     -------------        ------      -----------
8207    /images/as.jpg   S              0
8207    /images/al.jpg    L              0
8207    /images/bs.jpg   S              1
8207    /images/bl.jpg    L              1
8207    /images/cs.jpg    S              2
8207    /images/cl.jpg     L              2


想得到以下效果,用sql语句应该怎么实现?mysql数据库


obj_id    small_img         large_img         group_num

8207      /images/as.jpg       /images/al.jpg            0
8207      /images/bs.jpg       /images/bl.jpg            1

8207   /images/cs.jpg    /images/cl.jpg       2


下面是建表和造数据语句 , type表示图片类型,'S'是小图片,'L'是大图片

CREATE TABLE `t_images` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `obj_id` INT(11) DEFAULT NULL,
  `path` VARCHAR(255) DEFAULT NULL,
  `type` VARCHAR(2) DEFAULT NULL,
  `group_num` INT(1) DEFAULT NULL,
  PRIMARY KEY (`id`)

INSERT INTO t_images (obj_id,path,TYPE,group_num)
VALUES
(8207,'/images/as.jpg','S',0),(8207,'/images/al.jpg','L',0)
,(8207,'/images/bs.jpg','S',1),(8207,'/images/bl.jpg','L',1)
,(8207,'/images/cs.jpg','S',2),(8207,'/images/cl.jpg','L',2)


加载中
0
诺维茨基
诺维茨基
mysql> select obj_id,max(case when type='S' then path end) small_img,max(case when type='L' then path end) large_img,
group_num from t_images group by group_num;
+--------+----------------+----------------+-----------+
| obj_id | small_img      | large_img      | group_num |
+--------+----------------+----------------+-----------+
|   8207 | /images/as.jpg | /images/al.jpg |         0 |
|   8207 | /images/bs.jpg | /images/bl.jpg |         1 |
|   8207 | /images/cs.jpg | /images/cl.jpg |         2 |
+--------+----------------+----------------+-----------+
3 rows in set
mysql> 
1
Z
Zicl

select 

    obj_id, 

   max( case when type='S' then path else '' end) small_img,

   max(case when type='L' then path else '' end) large_img,

   group_num

from t_images

group by obj_id, group_num

0
紅顏為君笑
紅顏為君笑

代写作业哪家强

0
IdleMan
IdleMan
case when group by 
0
all2014
all2014
行专列  可以去百度了
0
laigous
laigous
这个我整理了一下,http://my.oschina.net/laigous/blog/210321  可以看看
返回顶部
顶部