如何在Mysql存储过程的列表中查找重复/重复值?

时间:2019-05-07 05:29:50

标签: mysql

我的列表就像[1,2,3,2,5,2] 所需结果是2次发生3次。 我正在使用mysql存储过程。 我试图在mysql中找到设置。

3 个答案:

答案 0 :(得分:0)

使用aggregationgroup by

select no, count(*)
from tablename
group by no

答案 1 :(得分:0)

如果只需要重复的值,请尝试

SELECT num, COUNT(num) AS c FROM yourTable GROUP BY num HAVING c>1

答案 2 :(得分:0)

一个技巧是替换列表中的2并对照之前的大小检查大小。 (尽管我怀疑您的列表可能不止一位数字)

例如

set @a = '1,2,3,5,2,6';

select  length(@A) ,
            length(replace(@a,'2','')),
            length(@A) - length(replace(@a,'2','')) 

+------------+----------------------------+-----------------------------------------+
| length(@A) | length(replace(@a,'2','')) | length(@A) - length(replace(@a,'2','')) |
+------------+----------------------------+-----------------------------------------+
|         11 |                          9 |                                       2 |
+------------+----------------------------+-----------------------------------------+
1 row in set (0.00 sec)

如果数字的长度不同,则将差值除以搜索项的长度

set @a = '1,2,11,12,13,15,12,16,12,100';
set @b = '12';
select  length(@A) ,
            length(replace(@a,@b,'')),
            (length(@A) - length(replace(@a,@b,''))) / length(@b);

+------------+---------------------------+-------------------------------------------------------+
| length(@A) | length(replace(@a,@b,'')) | (length(@A) - length(replace(@a,@b,''))) / length(@b) |
+------------+---------------------------+-------------------------------------------------------+
|         28 |                        22 |                                                3.0000 |
+------------+---------------------------+-------------------------------------------------------+
1 row in set (0.00 sec)