匹配sql中的多个数字并获取行中所有匹配项的计数

时间:2015-02-17 02:24:31

标签: mysql sql

我在sql中有3行:

sno        ids
1.         5,6,7
2.         6,8
3.         5,7,8 

我想知道有多少用户在其中有最大匹配(5,6,7),例如:,Sno. 2有1而Sno 3有2,依此类推。是否有查询/方式来做或不可能?

1 个答案:

答案 0 :(得分:1)

虽然我强烈建议您规范化数据库(即不在列中存储逗号分隔的字符串),但这里有一个使用casefind_in_set的选项:

select sno, 
  case when find_in_set(5, ids) then 1 else 0 end +
  case when find_in_set(6, ids) then 1 else 0 end +
  case when find_in_set(7, ids) then 1 else 0 end cnt
from yourtable
group by sno