2014-09-05 45 views
-1

如何修改以下内容以便按字母顺序显示地名(GG.Name)?将订单条款添加到GROUP_CONCAT

GROUP_CONCAT(CONCAT('<a href=\"', GG.URL, '\" title=\"', GG.Name, '\">', GG.Name, '</a>')) AS Names, 

我原来的GROUP_CONCAT子句包含“ORDER BY”,但我无法使其与我修改后的代码一起工作。

另外,你知道我如何修改它,以便每个逗号之后都有一个空格吗?它显示亚利桑那州,加利福尼亚州,德克萨斯我实际上已经用一个简单的str_replace函数修复了它,但我只是想知道是否有一种方法可以在没有修复的情况下正确显示它。

编辑:

我尝试以下两个变体,但它们都产生语法错误......

SELECT PLAN.Latin Latin2, PLAN.Common, PLAN.Rank, PLAN.Planimal, PLAN.Family, PLAN.Order1, PLAN.NoSymbol, PLAN.National, GS.Symbol, GS.Latin, GG.URL AS GURL, GROUP_CONCAT(CONCAT('<a href=\"', GG.URL, '\" title=\"', GG.Name, '\">', GG.Name, '</a>' ORDER BY GG.Name SEPARATE ', ')) AS Names, GG.IDParent 
FROM gs_planimals PLAN 
LEFT JOIN gs GS ON GS.Latin = PLAN.Latin 
LEFT JOIN gw_geog GG ON GG.IDArea = GS.IDArea AND GG.IDParent = :DBParent 
WHERE Rank != 55 AND PLAN.National = 'nat' AND NoSymbol != '1' 
GROUP BY PLAN.Latin 
ORDER BY PLAN.N, GG.Name 

版本#2:

SELECT PLAN.Latin Latin2, PLAN.Common, PLAN.Rank, PLAN.Planimal, PLAN.Family, PLAN.Order1, PLAN.NoSymbol, PLAN.National, GS.Symbol, GS.Latin, GG.URL AS GURL, GROUP_CONCAT(CONCAT('<a href=\"', GG.URL, '\" title=\"', GG.Name, '\">', GG.Name, '</a>') ORDER BY GG.Name SEPARATE ', ') AS Names, GG.IDParent 
FROM gs_planimals PLAN 
LEFT JOIN gs GS ON GS.Latin = PLAN.Latin 
LEFT JOIN gw_geog GG ON GG.IDArea = GS.IDArea AND GG.IDParent = :DBParent 
WHERE Rank != 55 AND PLAN.National = 'nat' AND NoSymbol != '1' 
GROUP BY PLAN.Latin 
ORDER BY PLAN.N, GG.Name 

回答

1

语法井documented。请注意,你甚至不需要concat(),因为group_concat()可以带多个参数。所以,如果我理解正确:

GROUP_CONCAT('<a href=\"', GG.URL, '\" title=\"', GG.Name, '\">', GG.Name, '</a>' 
       ORDER BY GC.Name SEPARATOR ', ') AS Names, 
+0

嗯......这与我之前尝试的类似。我编辑了我的原始文章,添加了两个我尝试没有成功的变体(语法错误)。我也尝试了删除CONCAT(和额外括号)的相同两个变体,结果相同。 – 2014-09-05 01:44:33