Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从30列中按更高匹配顺序选择100个结果_Mysql - Fatal编程技术网

Mysql 从30列中按更高匹配顺序选择100个结果

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 |

以下是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  |  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%与预期相反的结果。