在字段中查找重复值会导致多行相同的值
Posted
技术标签:
【中文标题】在字段中查找重复值会导致多行相同的值【英文标题】:Find duplicate values in a field results in multiple rows of the same values 【发布时间】:2021-11-23 23:30:18 【问题描述】:假设这个table
我想获取所有CODE
s,其中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
信息。具体来说,我提供的小提琴是一个过于简单的案例,我意识到它正在发生在客户的数据库中。他错误地为同一产品定义了重复的尺寸。即,ITEID
,也没有使用 COUNT(SIZEPOS)
。只是'DISTINCT CODE's以上是关于在字段中查找重复值会导致多行相同的值的主要内容,如果未能解决你的问题,请参考以下文章