我有一个数据库,当我拿到一些结果时,我想弄清楚如何以不同的格式返回我现在得到的例子
select
reports.host_ip, reportitems.mskb
from
reportitems
inner join
reports on reports.report_id = reportitems.report_id
where
reportitems.mskb IS NOT NULL
order by
reportitems.mskb;
输出:
10.63.128.115|2251481
10.63.128.89|2269637
10.63.128.100|2269637
10.63.128.16|2269637
10.63.128.115|2269637
10.63.128.115|2669970
10.63.128.89|2871997
10.63.128.100|2871997
10.63.128.16|2871997
10.63.128.115|2871997
10.63.128.194|3000483
10.63.128.198|3000483
10.63.128.89|3000483
我希望输出例如左列中的所有ips都要分组,所以对于2269637,它看起来像
10.63.128.89
10.63.128.100 2269637
10.63.128.16
10.63.128.115
我可以使用SQL语句执行此操作,还是需要在之后处理它?</ p>
谢谢
答案 0 :(得分:0)
通常这会留给显示数据的UI,但如果这不是一个选项,或者只是难以实现,您可以使用GROUP_CONCAT()
函数并在值之间推送回车符:
SELECT GROUP_CONCAT(CONCAT(reports.host_ip, '\n')) as IP_Addresses,
reportitems.mskb
FROM reportitems
INNER JOIN reports
ON reports.report_id = reportitems.report_id
WHERE reportitems.mskb IS NOT NULL
GROUP BY reportitems.mskb
ORDER BY reportitems.mskb