2017-09-25 4 views
0

こんにちは、私はクエリで苦労してmysqlに新しいです。mysqlのグループ列

SELECT 
    g_id, 
    GROUP_CONCAT(s_id,':',tn) 
FROM `table 
WHERE u_id = 1 
AND g_id in (1234,3211) 
ORDER by g_id 

私は期待しています:

{1234:{158990:30,158991:60},3211:{9988:-55,9989:65}} 

Table structure

おかげ

答えて

0

は2つの段階でそれを行います。第1段階はg_idでグループを使用し、第2段階はグループなしでgroup_concatを使用します。

drop table if exists t; 
create table t(u_id int,g_id int,S_id int,tn int); 

insert into t values 
(1,1234,158990,30), 
(1,1234,158991,60), 
(1,3211,9988,-55), 
(1,3211,9989,65); 

select concat('{',group_concat(g_id,':{',gc,'}'),'}') 
from 
(SELECT g_id ,GROUP_CONCAT(s_id,':',tn) gc 
FROM t WHERE u_id = 1 and g_id in (1234,3211) 
group by g_id 
ORDER by g_id 
) s 

結果

+------------------------------------------------------+ 
| concat('{',group_concat(g_id,':{',gc,'}'),'}')  | 
+------------------------------------------------------+ 
| {1234:{158990:30,158991:60},3211:{9988:-55,9989:65}} | 
+------------------------------------------------------+ 
1 row in set (0.04 sec) 
+0

ありがとうP.Salmon。それは好きだった魅力が働いた。 –