2016-07-06 48 views
0

在MySQL中,我有如下表:Mysql的串连只有特定的行

id | paramname | paramcategory  | value   | 
---+-------------+-------------------+-----------------+ 
1 | width  | dimensions  | 240    | 
2 | height  | dimensions  | 400    | 
3 | param1  | category1   | some value 1 | 
4 | param2  | category1   | some value 2 | 
5 | param3  | category10  | some value 100 | 
... 

我想有一个查询将返回一个表,只有串接多个行,以及所有其他行应维持不变,这样的事情:

paramname  | value  | 
--------------+--------------+ 
width, height | 240 x 400 | 
param1  | some value 1 | 
... 

我想有关串联基础上,需要paramcategory,但如果可能的话/根据需要,级联可能发生的具体paramname S以及。无论更简单/更简单。

请帮忙吗?

回答

2

从上面看这个问题,你将不得不一起'联合'2查询。工会的第一部分是你的连续结果,第二部分是你的原始行。对于第一部分,您将需要在此表上执行自加入,请参阅

从表中选择concat(a.paramname,b.paramname),concat(a.value,b.value) A,表b,其中a.paramcategory = b.paramcategory

沿着这些线路....

其实如果换成周围的2个部分的工会,你会保持原来的列名了。

+0

谢谢约翰尼,我不太明白以下内容。你的查询将很可能连接所有类似的类别,而我需要只连接1个维度。我将如何做到这一点? –

+0

沿着select paramname,paramcategory从paramcategory!='dimensions'的参数paramcategory选择concat_ws(',',a.paramname,b.paramname),concat_ws(',',a.value,b.value)从表a,表b其中a.paramname!= b.paramname和a.paramcategory = b.paramcategory和a.paramcategory ='dimensions' –