多个结果合并为一个SQL

时间:2018-02-09 18:30:13

标签: sql sqlite

我有一个数据库,当我拿到一些结果时,我想弄清楚如何以不同的格式返回我现在得到的例子

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>

谢谢

1 个答案:

答案 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