You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对dbo.WebsiteIP表IP去重并合并关联站点名?

解决SQL Server中按IP分组合并SiteName的问题

嘿,你要实现的是按IP地址分组,将对应的站点名称合并为逗号分隔的字符串,之前的Update语句方向不对,咱们直接用查询语句就能得到你想要的结果。

首先,针对你的dbo.WebsiteIP表,我们可以用SQL Server里经典的STUFF+FOR XML PATH('')组合来实现字符串聚合,具体语句如下:

SELECT 
    IPAddress,
    STUFF(
        (SELECT ', ' + SiteName 
         FROM dbo.WebsiteIP AS w2 
         WHERE w2.IPAddress = w1.IPAddress 
         FOR XML PATH('')),
        1, 2, ''
    ) AS WebsiteName
FROM dbo.WebsiteIP AS w1
GROUP BY IPAddress
ORDER BY IPAddress;

语句解释:

  • 内层的子查询(SELECT ', ' + SiteName ... FOR XML PATH(''))会把同一个IP下的所有SiteName拼接成类似, website1, website2的字符串。
  • STUFF函数的作用是去掉开头多余的, :参数1, 2, ''表示从第1个字符开始,删除2个字符(也就是开头的, ),替换为空字符串。
  • 外层通过GROUP BY IPAddress来获取唯一的IP地址,确保每个IP只返回一行。

执行这个语句后,就能得到符合预期的结果(注:你的预期结果里192.168.30.8漏了website16和website17,实际执行会包含所有对应站点):

IPAddressWebsiteName
192.168.30.6website1, website2
192.168.30.7website3, website4, website5, website6, website7
192.168.30.8website8, website9, website10, website11, website13, website14, website16, website17
192.168.30.9website12
192.168.30.24website15

内容的提问来源于stack exchange,提问作者T.Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:43:09