MYSQL 计数匹配多列
Posted
技术标签:
【中文标题】MYSQL 计数匹配多列【英文标题】:MYSQL counting matches across multiple columns 【发布时间】:2017-07-19 01:23:03 【问题描述】:我有下表:
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】:您必须一一评估匹配项。我会为此使用if()
函数:
SELECT * FROM table WHERE col2 = 'y2'
ORDER BY if(col1='u7',1,0) + if(col3='v7',1,0) + ... desc
【讨论】:
以上是关于MYSQL 计数匹配多列的主要内容,如果未能解决你的问题,请参考以下文章