修改CONCAT显示

时间:2014-08-18 15:28:54

标签: php mysql

我刚学会了如何在数据库查询中使用CONCAT函数。它工作得很好,但我试图弄清楚如何修改显示。

在我的参考表中,我的显示器看起来像这样:日本,亚利桑那州

我想在逗号后插入一个空格并按字母顺序显示名称,如下所示:

亚利桑那州,日本

我在查询结束时插入了一个二级订单命令,但它没有做任何事情。此外,是否可以在CONCAT字符串中的单个名称中插入超链接?例如:

<a href="/world/arizona" title="Arizona">Arizona</a>, <a href="/world/japan" title="Japan">Japan</a>

以下是我的查询...

SELECT PLAN.Latin Latin2, PLAN.Common, PLAN.Group1, PLAN.Rank, PLAN.Family, PLAN.Order1,
 GS.Symbol, GS.Latin, GROUP_CONCAT(GG.Name) 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
WHERE PLAN.Group1 = :RefCat AND Rank != '55'
GROUP BY PLAN.Common
ORDER BY PLAN.N, GG.Name

2 个答案:

答案 0 :(得分:1)

group_concat采用order byseparator的可选参数,因此:

SELECT    PLAN.Latin Latin2, 
          PLAN.Common, 
          PLAN.Group1, 
          PLAN.Rank, 
          PLAN.Family, 
          PLAN.Order1,
          GS.Symbol, 
          GS.Latin, 
          GROUP_CONCAT(GG.Name ORDER BY GG.Name ASC SEPARATOR ', ') 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
WHERE     PLAN.Group1 = :RefCat AND Rank != '55'
GROUP BY  PLAN.Common
ORDER BY  PLAN.N, GG.Name

答案 1 :(得分:1)

正如您已标记PHP一样,让我们​​用PHP解决它。

  • 从数据库表中获取结果。
  • 分解,,创建一个GG.Name的数组。
  • 按字母顺序对数组进行排序。


 //Grab results and store in an assoc array

 $arrNames = explode(",", $arrResults['Names']);
 natsort($arrNames);

例如,我们有以下数组;

 array("Japan", "Arizona", "Hong Kong", "Australia")

我们使用natsort

(
    [1] => Arizona
    [3] => Australia
    [2] => Hong Kong
    [0] => Japan
)