mysql分组合并查询,

有个问题如图:
现在上面显示的数据是我用 group by device_type 搞出来的。
但我我想得到的结果是把这些列再合并
这样的分组后。看到右边 的device_type不同了吗
我想合并分组。
简单的描述一 下我的意思:
打个比方,假如我想保存一个人体的信息,我建了一个表,表中有一个字段 。我就在device_type字段 中定义 1,2,3,4, 分别代表人的头部信息(身体部分就为null,因为只保存头部,2,3,4道理相同 ),,2代表人的胸部信息,3代表人的JJ 信息,4代表人的屁股。
现在我按 device_type分组查询出的是一个人的各部分的信息。然后该就是把这些作息合并 。才是一个完整的人信息。求具体sql语句写法。
我再描述清楚点

GROUP_CONCAT(expr)
该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;

另外,我觉得你不应该按照device_type分组,而是应该按人分组追问

我试下。你看下我的问题补充

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-15
SELECT t2.yan,t2.mei,t2.bi,t2.zui,t3.xiong,t3.lei,t4.gu,t4.tui,t4.jiao FROM test t1
LEFT JOIN (SELECT userid,yan,mei,bi,zui FROM test WHERE TYPE = 1 ORDER BY insert_time DESC LIMIT 1) t2
ON t1.userid = t2.userid
LEFT JOIN (SELECT userid,xiong,lei FROM test WHERE TYPE = 2 ORDER BY insert_time DESC LIMIT 1) t3
ON t1.userid = t3.userid
LEFT JOIN (SELECT userid,gu,tui,jiao FROM test WHERE TYPE = 3 ORDER BY insert_time DESC LIMIT 1) t4
ON t1.userid = t4.userid
ORDER BY insert_time DESC LIMIT 1本回答被提问者采纳
第2个回答  2013-03-15
楼主太邪恶,坚决不帮
第3个回答  2013-03-15
使用 sum, case when 可以实现你的需求,但速度明显受影响,具体如何写,还得看你的具体需求。
相似回答