MYSQL计数匹配多个列

时间:2017-07-19 01:23:03

标签: mysql

我有下表:

id  col1    col2    col3    col4 ....
1   x3      y2      v7      i7  
2   x8      u4      r1      o2
3   m7      w2      x3      l1
4   j5      y2      t2      a5
5   u7      y2      v7      a5
6   b7      y2      x3      a5

我希望与col2完美匹配,并按照定义的列数匹配的最大数量排序结果

例如,查询为col1 = u7,col2 = y2,col3 = v7,返回结果应为

id  col1    col2    col3    col4 ....
5   u7      y2      v7      a5  (3 matches)
1   x3      y2      v7      i7  (2 matches)
4   j5      y2      t2      a5  (1 match)
6   b7      y2      x3      a5  (1 match)

到目前为止,我有

SELECT * FROM table WHERE col2 = 'y2' ORDER BY...

我不确定将什么放入ORDER BY子句

1 个答案:

答案 0 :(得分:1)

你必须逐一评估比赛。我会使用if()函数:

SELECT * FROM table WHERE col2 = 'y2'
ORDER BY if(col1='u7',1,0) + if(col3='v7',1,0) + ... desc