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

查询关联表中Detailed Description列高频词及对应Simple Description

问题分析与修正方案

原场景说明

已关联两张表:

  • 表1提供SKU、Detailed Description列
  • 表2提供Simple Description列
    数据示例:
SKUDetailed DescriptionSimple Description
123456Salmon TroutFish
654321Sea BassTool

需求:

  1. 提取Detailed Description列中出现频率最高的词汇
  2. 同时获取这些词汇对应的Simple Description值

原SQL的问题

  1. 缺失表关联条件:INNER JOIN table2 b未指定关联逻辑(比如ON a.SKU = b.SKU,假设SKU为两表关联键)
  2. 分组规则违规:SELECT子句中的a.SKU、a.DESCRIPTION等列未在GROUP BY中,也未使用聚合函数,不符合SQL分组要求
  3. 列名混淆:原代码中a.DESCRIPTION应为表1的Detailed Description列,存在列名写错的问题
  4. 逻辑偏离需求:未正确关联词汇与对应Simple Description,也未实现按词汇频率排序的核心逻辑

修正后的SQL方案

假设两表通过SKU关联,以下代码先拆分Detailed Description中的词汇,统计频率后关联对应的Simple Description:

WITH E1(N) AS (
    SELECT 1 FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t(N)
),
E2(N) AS (SELECT 1 FROM E1 a CROSS JOIN E1 b),
E4(N) AS (SELECT 1 FROM E2 a CROSS JOIN E2 b),
-- 拆分Detailed Description为单个词汇
SplitWords AS (
    SELECT 
        b.[Simple Description],
        LTRIM(RTRIM(SUBSTRING(a.[Detailed Description], l.N1, l.L1))) AS Word
    FROM table1 a
    INNER JOIN table2 b ON a.SKU = b.SKU -- 替换为实际关联条件
    CROSS APPLY (
        SELECT s.N1,
            L1 = ISNULL(NULLIF(CHARINDEX(' ', a.[Detailed Description], s.N1), 0) - s.N1, 4000)
        FROM(
            SELECT 1 UNION ALL
            SELECT t.N + 1 
            FROM(
                SELECT TOP (ISNULL(DATALENGTH(a.[Detailed Description])/2, 0))
                    ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
                FROM E4
            ) t(N)
            WHERE SUBSTRING(a.[Detailed Description], t.N, 1) = ' '
        ) s(N1)
    ) l(N1, L1)
    WHERE LTRIM(RTRIM(SUBSTRING(a.[Detailed Description], l.N1, l.L1))) <> ''
)
-- 统计词汇频率并关联对应Simple Description
SELECT TOP 50
    Word,
    COUNT(*) AS Frequency,
    -- 若一个词汇对应多个Simple Description,用逗号分隔;去重则保留DISTINCT
    STRING_AGG(DISTINCT [Simple Description], ', ') AS Related_Simple_Descriptions
FROM SplitWords
GROUP BY Word
ORDER BY Frequency DESC;

关键说明

  • 务必将ON a.SKU = b.SKU替换为实际的两表关联条件
  • STRING_AGG适用于SQL Server 2017及以上版本,低版本可改用STUFF+FOR XML PATH拼接结果
  • 若需保留所有关联记录而非去重,删除STRING_AGG中的DISTINCT即可

内容的提问来源于stack exchange,提问作者VINIJR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16