我在sql中有3行:
sno ids
1. 5,6,7
2. 6,8
3. 5,7,8
我想知道有多少用户在其中有最大匹配(5,6,7),例如:,Sno. 2
有1而Sno 3
有2,依此类推。是否有查询/方式来做或不可能?
答案 0 :(得分:1)
虽然我强烈建议您规范化数据库(即不在列中存储逗号分隔的字符串),但这里有一个使用case
和find_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