我刚学会了如何在数据库查询中使用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
答案 0 :(得分:1)
group_concat
采用order by
和separator
的可选参数,因此:
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
)