2015-02-05 125 views
1

我是新发布,但社区已成为我迄今为止项目中的最佳资源。 我是一个愚蠢的/虚拟的Mysql“想成为”,我正处在一个让我发疯的项目中。如何合并具有相同id的多个行mysql

我有一个wordpress plugin buddypress的表,它将meta_key和meta_values配对,以创建类似于分类的东西。我的职责是使用这些配对值来实现高级组搜索。这里是原来的表:

-------------------------------------------- 
id | group_id | meta_key   | meta_value 
-------------------------------------------- 
1 | 1  | time-zone   | Kwajalein 
2 | 1  | playstyle   | hardcore 
3 | 1  | recruiting-status | Open 
4 | 1  | ilvl    | 115 
5 | 1  | main-raid   | Final Coil of Bahamut 
6 | 1  | voicechat   | fc.teamspeak3.com 

等....

使用视图我设法创造begginers一个更友好的检索表:


gid| time-zone| playstyle | main-raid 
-------------------------------------------- 
1 |   |   | 
1 |Kwajalein |   | 
1 |   | hardcore | 
1 |   |   | 
1 |   |   | Final Coil of Bahamut 
1 |   |   | 

这里是查看代码:

SELECT distinct 
group_id AS 'gid', 
IF(meta_key='recruiting-status',meta_value,'') AS 'Recruitment', 
IF(meta_key='server',meta_value,'') AS 'server', 
IF(meta_key='time-zone',meta_value,'') AS 'tzone', 
IF(meta_key='main-raid',meta_value,'') AS 'raid', 
IF(meta_key='raid-days',meta_value,'') AS 'days', 
IF(meta_key='playstyle',meta_value,'') AS 'playstyle', 
IF(meta_key='raid-progression',meta_value,'') AS 'progression', 
IF(meta_key='raid-time',meta_value,'') AS 'time', 
IF(meta_key='tanker-spot',meta_value,'') AS 'tank', 
IF(meta_key='healer-spot',meta_value,'') AS 'healer', 
IF(meta_key='melee-dps-spot',meta_value,'') AS 'melee', 
IF(meta_key='ranged-dps-spot',meta_value,'') AS 'ranged', 
IF(meta_key='magic-dps-spot',meta_value,'') AS 'magic', 
IF(meta_key='ilvl',meta_value,'') AS 'ilvl', 
IF(meta_key='voicechat',meta_value,'') AS 'voice', 
IF(meta_key='voicechatpass',meta_value,'') AS 'voicep', 
FROM wpstatic_bp_groups_groupmeta 

的一点是,我需要合并该结果(图),以便所有的GROUP_ID = 1或2或3等站在一个单列,像这样:


gid| time-zone| playstyle | main-raid 
-------------------------------------------- 
1 |Kwajalein | hardcore | Final Coil of Bahamut 
2 |SaoPaulo | regular | Second Coil of Bahamut 

任何人都可以帮助我吗?

+0

这是类似于此http://stackoverflow.com/questions/16568228/how-to-transpose-mysql-table-rows-into-columns但我认为你可以添加到年底你认为'GROUP BY gid'可能吗? – 2015-02-05 20:21:01

+0

我试了一下,除了gid列以外没有任何数据。 – 2015-02-06 11:08:20

回答

1

只是围绕在你的MAXIF S,或将捕获的非空字符串(例如,GROUP_CONCAT),并添加一个GROUP BY group_id另一个聚合函数添加结束。例如,

SELECT 
group_id AS gid, 
MAX(IF(meta_key='recruiting-status',meta_value,'')) AS 'Recruitment', 
MAX(IF(meta_key='server',meta_value,'')) AS 'server', 
... 
FROM wpstatic_bp_groups_groupmeta 
GROUP BY group_id 
+0

谢谢,我马上试试,我已经尝试了id,但不是最大值。 :) – 2015-02-06 11:02:48

+0

工作就像一个魅力,我很愚蠢!非常感谢你! – 2015-02-06 11:06:31

相关问题