卡住了试图组织列的数据后连接

时间:2019-07-13 01:43:59

标签: sqlite

我正在尝试从如下所示的SQLite表中提取数据:

IP                 PORT        PROTOCOL
-------------------------------------------
192.168.50.106     0           TCP
192.168.50.106     0           TCP
192.168.50.106     68          UDP
192.168.50.106     53          TCP
192.168.50.106     53          TCP

192.168.50.109     0           TCP
192.168.50.109     0           TCP
192.168.50.109     53          UDP
192.168.50.109     445         TCP
192.168.50.109     445         TCP
192.168.50.109     139         TCP

现在,使用命令:

SELECT IP, GROUP_CONCAT(Port, ',') From PortData WHERE Protocol = 'TCP' GROUP BY Ip ORDER BY IP ASC

我得到:

IP                    PORT
--------------------------------------
192.168.50.106        0,0,53,53
192.168.50.109        0,0,445,445,139

这真的很接近我所需要的!我只需要“端口”列以仅显示不同的端口值,并按升序排列端口号即可。在连接第二列的数据后,我非常困惑。

这是我要获取的输出,如果您想要一个示例:

IP                    PORT
--------------------------------------
192.168.50.106        0,53
192.168.50.109        0,139,445

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在进行格式化查询之前,不要在之前之前整理格式化的数据,以消除重复项并生成正确的顺序。作为子查询或公共表表达式(CTE)(即WITH子句)执行此操作。

(随后尝试排序和消除重复项实际上需要重新分析字符串,将其放入表中,排序并除去重复项,然后再将其放回列表中。您只是整圈而已。或者不在数据库中,则必须使用宿主语言来完成,但是它需要相同的总体步骤。)

this.strike