2011-04-23 13 views
2

我有這樣的查詢:是否有可能在兩列上使用mysql group_concat在一個列中得到結果?

SELECT a.sec_id as sid, r.rank 
FROM `0_area` AS a 
LEFT JOIN `0_rank` AS r ON a.rank_id = r.id 
WHERE a.user_id = $id 
GROUP BY a.sec_id 

返回我行有兩列。正如:

sid | rank 
2 | user 
3 | mod 
4 | admin 

我想用它在另一個查詢,而把一列兩個返回的行,可能使用GROUP_CONCAT如本例。下面的示例此時不起作用

SELECT m.id, m.nom, a.sec_id, a.rank, GROUP_CONCAT(cast(DISTINCT a.sec_id # r.rank 
ORDER BY a.sec_id ASC 
SEPARATOR ',') AS char) AS levels 
FROM `0_member` AS m 
LEFT JOIN `0_area` AS a ON m.id = a.user_id 
LEFT JOIN `0_rank` AS r ON r.id = a.rank_id 
WHERE a.sec_id =2 
ORDER BY m.nom ASC 

謝謝。

PS。我得到的錯誤是:#1064 - 你的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在第1行的'DISTINCT a.sec_id#r.rank ORDER BY a.sec_id ASC SEPARATOR','as char)as lev'處使用正確的語法。

+1

第一:第一個查詢是沒有意義的,而不是有效的SQL(雖然有效的MySQL),因爲r.rank並不明確。其次:不,你不能(據我所知)。第三:你能否解釋你真正想要的 - 有可能是一個好的解決方案。 – Erik 2011-04-23 17:59:44

回答

10

這解決了它。

GROUP_CONCAT(cast(concat(a.sec_id, \': \', a.rank) AS char) SEPARATOR \', \') AS ranks 
相關問題