2016-07-06 69 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' –