Mysql 从30列中按更高匹配顺序选择100个结果
以下是30个固定问题的表格答案,是/否类型答案Mysql 从30列中按更高匹配顺序选择100个结果,mysql,Mysql,以下是30个固定问题的表格答案,是/否类型答案 id | us_id | q01 | q02 | q03 | q04 | q05 | q06 |...continue...| q30 1 | 139 | 1 | 1 | 0 | 1 | 1 | 1 |..............| 1 2 | 120 | 0 | 0 | 1 | 1 | 0 | 0 |..............| 0 3 | 155 | 1 |
id | us_id | q01 | q02 | q03 | q04 | q05 | q06 |...continue...| q30
1 | 139 | 1 | 1 | 0 | 1 | 1 | 1 |..............| 1
2 | 120 | 0 | 0 | 1 | 1 | 0 | 0 |..............| 0
3 | 155 | 1 | 0 | 0 | 1 | 0 | 1 |..............| 1
4 | 211 | 0 | 0 | 1 | 0 | 0 | 1 |..............| 1
5 | 112 | 1 | 1 | 1 | 1 | 0 | 1 |..............| 0
6 | 296 | 1 | 1 | 0 | 1 | 1 | 1 |..............| 1
7 | 421 | 0 | 1 | 1 | 1 | 0 | 0 |..............| 0
8 | 101 | 1 | 1 | 1 | 1 | 0 | 1 |..............| 0
9 | 986 | 0 | 0 | 0 | 0 | 1 | 1 |..............| 1
10 | 997 | 1 | 1 | 0 | 1 | 0 | 1 |..............| 0
11 | 474 | 1 | 1 | 1 | 1 | 0 | 0 |..............| 1
12 | 881 | 0 | 0 | 0 | 1 | 1 | 1 |..............| 1
xx | yyy | ..up to fifty thousand rows... |..............| x
用户示例:us_id 112希望获得100个按最佳匹配排序的结果,并与他q01到q30列进行匹配。匹配的最高百分比应首先返回。问题是固定的,一个单独的表格用于提问。答案为固定类型是/否。用户自己也回答了此处的问题用户id=112,并尝试找出谁是他的最佳匹配者,即回答与他相似或接近相同或尽可能最大的人
请帮我查询一下
SELECT * FROM table WHERE _condition_ ORDER BY _matching condition_ LIMIT 0,100
我不知道有什么条件
请帮忙
query >>> SELECT *,(q01+q02+q03......+q30) as total FROM table ORDER BY total DESC LIMIT 0,100
试试这个
我用9个问题和10个用户检查了这个查询,结果成功了
选择*,q1+q2+q3+q4+q5+q6+q7+q8+q9……….q30作为来自
总计=选择的问题
q1+q2+q3+q4+q5+q6+q7+q8+q9………..共2个问题
其中us_id=112,限制为100
您可以先对q01列进行排序,然后再对q02进行排序,这样您可以先对顶部匹配进行排序,然后再对下一个匹配进行排序。正确地说,sql查询对于这种情况是不够的。您的意思是多了一个的行先进行排序吗?@FarhadHossain如果我是您,我会将所有记录器作为数组加载,并在其他语言ID 15上进行计算,然后q01=1值为1的q01将排在第一位,q02=0,然后所有值为0的q02将排在第一位,同样的方式q03和rest@Gouda ElalfyI已经回答了您删除的问题。感谢您的回答,但事情并不那么简单。假设us_id 112的所有答案均为零,预期结果应为零或接近零,而不是求和后的最高值。q1+q2无法解决此问题。us_id 112可能回答了前15个问题yes=1,但有些用户回答了最后15个问题yes=1,查询将返回100%与预期相反的结果。