mysql查询重复项计数和输出格式

标签 mysql sql

我有这样的数据表示,其中 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/

相关文章:

mysql - 合并表/连接查询 MySql

php - 从内部联接中选择 - PHP/MYSQL

php - 如何使用递归函数返回 true

mysql - 你如何做一个 mysql WHERE something = 'something' OR ... (PHP)

mysql - 从一对多关系中获取最近的记录

Mysql:计算列的总和

mysql 功能无法正常工作

sql - 获取 x 列的非重复项,但 y 列的重复项

mysql - 如何在codeigniter模型中使用mysql事件调度程序

mysql - 找到输出的mysql查询