在字段中查找重复值会导致多行相同的值

Posted

技术标签:

【中文标题】在字段中查找重复值会导致多行相同的值【英文标题】:Find duplicate values in a field results in multiple rows of the same values 【发布时间】:2021-11-23 23:30:18 【问题描述】:

假设这个table

我想获取所有CODEs,其中SIZEPOS 多次具有相同的值...

对于产品来说

('194342-01', 10510, 5),
('194342-01', 10510, 7),
('194342-01', 10510, 9),
('194342-01', 10510, 11),
('194342-01', 10510, 13),
('194342-01', 10510, 15),
('194342-01', 10510, 5),
('194342-01', 10510, 19),

我想得到'194342-01', 10510, 5,因为SIZEPOS 5 出现了两次。我通过以下查询实现了它

SELECT CODE, ITEID, COUNT(SIZEPOS) AS CNT
FROM @SUBSTITUTE
GROUP BY CODE, ITEID, SIZEPOS
HAVING COUNT(SIZEPOS) > 1;

但由于某种原因,一些返回的行出现了两次,甚至三次......我在这里错过了什么?

【问题讨论】:

您没有返回任何重复的行 - 您只是没有在结果集中显示 SIZEPOS 列,但您明确表示要保持不同的 SIZEPOS 值。将其添加到您的结果集中,您会发现每一行都是独一无二的。考虑到您按每一列分组,这有点明显。也许您需要从分组依据中删除一列?或者也许结果是完美的。 是的,我后来发现,有些行有多个值的重复值......因此,每次出现多次的任何不同值都会显示它们......在那种情况下当然,我的查询中需要 DISTINCT,这就是我最终要做的!感谢 @DaleK 同时提供的帮助和友善! 发布并自我接受您的答案,以避免其他人(例如我)花时间在上面。 你是对的,对不起!我可以在 20 小时内接受我自己的答案,因为系统已通知我! 【参考方案1】:

我最终在我的主查询中使用了 DISTINCT 以避免行出现多次。于是查询变成了这样:

SELECT DISTINCT CODE, ITEID, COUNT(SIZEPOS) AS CNT
FROM @SUBSTITUTE
GROUP BY CODE, ITEID, SIZEPOS
HAVING COUNT(SIZEPOS) > 1;

多次出现的行是具有不同值且具有重复值的行,因此每一行对应于每个不同的重复值!这很容易,但我花了一些时间才弄清楚!

【讨论】:

您的问题/答案实际上没有意义。您指定要组合 SIZEPOS 多次具有相同值的行,但是您正在组合 SIZEPOS 的所有值,并且只为 CODE, ITEID 获得不同的结果 - 在这种情况下,只需从 @ 中删除 SIZEPOS 987654327@ 子句? 我不需要SIZEPOS 信息。具体来说,我提供的小提琴是一个过于简单的案例,我意识到它正在发生在客户的数据库中。他错误地为同一产品定义了重复的尺寸。即,。所以我所需要的只是一种检测这些产品 ID 的方法,并将它们排除在进一步处理之外……在最终查询中,我什至没有使用 ITEID,也没有使用 COUNT(SIZEPOS)。只是'DISTINCT CODE's 无论哪种方式,问题都严重不清楚。将来尝试minimal reproducible example,您可以在其中显示您想要为您提供的示例数据的确切期望结果。

以上是关于在字段中查找重复值会导致多行相同的值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hive 或 Pig 在字段中查找重复次数最多的值

SQL查找某一字段相同,某一字段不同的数据

在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

将数据从多行转换为多列[重复]

将元素添加到具有 v-model 的数组会导致重复

SQL中查找某字段值重复或多个字段值重复的记录数