我有这样的数据表示,其中 col1 是一个 recID (int),col2 是版本 (varchar),col3 是一个补丁 (int)。
此表中有重复项(rec 36,37):
recID version patch
32 5.1.4 434 -
36 5.1.4 434 p2
37 5.1.4 434 p2
我用这个查询给了我重复:
select recID,
count(Version) as Count,
Version
from Test
group by Version
having count > 1;
输出:
recID Count Version Patch
32 3 434 -
如何修复此查询?我想列出recID,但这是错误的,因为recID 不是重复项,而是有一个空值。
但是我正在寻找的是给我重复的版本并以这种方式列出它(如果可能的话) 预期输出:
recID Count Version Patch
32 1 5.1.4 434 -
36 2 5.1.4 434 p2
37 - 5.1.4 434 p2
最佳答案
您可以使用变量获得预期输出
select recID, version, patch,
case when @prevValue = version
then @cnt:=@cnt+1
else @cnt:=0
end as DupCount,
@prevValue:=version as var_version
FROM Table1, ( select @prevValue := NULL , @cnt:=0 ) t
order by version
关于mysql查询重复项计数和输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727556/