我有這個下面的查詢:Mysql的行轉換成列,優化查詢使用IF
SELECT a.rank AS rank, concat(m.prenom, ' ', m.nom) AS name, d.department
FROM `0_area` AS a
LEFT JOIN 0_member AS m ON a.user_id = m.id
LEFT JOIN 0_depart AS d ON a.user_id = d.user_id
WHERE a.sec_id = 2
AND (a.rank = 'mod' OR a.rank = 'adm')
AND d.department IN (75, 92)
上面的查詢將返回我的三列,命名rank | name | department
,它的工作,有一個單獨的行對於每個秩針對一個部門。
rank | name | department
mod | Steven Smith | 75
mod | Jeremy Roy | 92
adm | Vincent Jones | 75
我需要什麼,是讓所有這些信息在一排,因爲我需要把它作爲另一個更大的查詢的一部分,即只返回一行。
我想到了group_concat,並有兩列,一個用於mod,一個用於adm。如果有多個mod(在給定的例子中是75,92),它們將被逗號分隔。
mod | adm
Steven Smith, Jeremy Roy | Vincent Jones
我清楚了嗎?謝謝朋友。
組代替人的名字。 – 2011-02-28 13:00:15
謝謝@ToonMariner,但即使如此,我得到了兩行。我想要一行。你怎麼看? – 2011-02-28 13:02:27
如果這是一個更大的查詢的一部分,它可能會有所幫助,如果你詳細說明,因爲在這個階段可能更容易不分組這些數據。 – 2011-02-28 13:20:36