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

如何筛选同一目录索引下名称不同的重复商品数据

问题描述

现有商品数据表ARTYKUL的结构及数据如下:

INDEKS_KATALOGOWyID_MAGAZYNUNazwa
Opa0000011Węgiel
Opa0000016Węgiel
Opa0000017Węgiel
Opa0000021Węgiel brunatny
Opa0000026Węgiel brunatny
Opa0000027Węgiel brunatny
PRO0000011Pasta 10 ml
PRO0000016Pasta 10 ml
PRO0000017Pasta 10 ml
PRO0000018PASTA 10 ml
ROL0000011Artykuły rolnicze
ROL0000016Artykuły rolnicze
ROL0000017Artykuły rolnicze

当前使用的SQL查询语句为:

select indeks_katalogowy, ID_MAGAZYNU, Nazwa
from artykul
where indeks_katalogowy in (Select INDEKS_KATALOGOWY 
    from ARTYKUL
    Group by INDEKS_KATALOGOWY, NAZWA
    having count(*) >1)

需要修改查询,仅显示同一INDEKS_KATALOGOWY下存在不同Nazwa的商品记录(例如PRO000001,因"Pasta 10 ml"与"PASTA 10 ml"视为不同名称),期望输出结果如下:

INDEKS_KATALOGOWyID_MAGAZYNUNazwa
PRO0000011Pasta 10 ml
PRO0000016Pasta 10 ml
PRO0000017Pasta 10 ml
PRO0000018PASTA 10 ml
解决方案

原SQL的问题在于子查询按INDEKS_KATALOGOWY和NAZWA分组后统计重复名称的记录,筛选出的是同一目录索引下同一名称出现多次的商品,不符合需求。

正确思路是先找出同一INDEKS_KATALOGOWY下对应不同Nazwa的目录索引,再用这些索引匹配原表的所有记录。

修改后的SQL语句如下:

SELECT indeks_katalogowy, ID_MAGAZYNU, Nazwa
FROM artykul
WHERE indeks_katalogowy IN (
    SELECT INDEKS_KATALOGOWY
    FROM ARTYKUL
    GROUP BY INDEKS_KATALOGOWY
    HAVING COUNT(DISTINCT Nazwa) > 1
)

逻辑说明

  1. 子查询部分:按INDEKS_KATALOGOWY分组,通过COUNT(DISTINCT Nazwa)统计每个目录索引下不同名称的数量,筛选出数量大于1的目录索引(即存在不同名称的商品)。
  2. 外层查询:用筛选出的目录索引,获取原表中对应的所有商品记录,得到目标结果。

内容的提问来源于stack exchange,提问作者Tomasz Maciążek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:33:14