我的列表就像[1,2,3,2,5,2] 所需结果是2次发生3次。 我正在使用mysql存储过程。 我试图在mysql中找到设置。
答案 0 :(得分:0)
使用aggregation
和group 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)