微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – MySQL计算单行中的匹配字段

我正在制作一个“预测结果”类型系统,要求用户预测谁将在5个类别中获胜.我将所有数据都放在一张表中,并且我想找出一种方法来计算谁拥有最正确的答案.我知道查询需要什么,但我的语法很乱.有人可以帮帮我吗?

<?PHP
$res = array(1,2,3,4,5); //correct results

// The idea is to count the number of table fields that match the $res array
// and store that count in the 's' column

$sql = MysqL_query("SELECT *,s FROM awards_Votes WHERE 
s+=IF( c1==".$res[0].",1,0),
s+=IF( c2==".$res[1].",1,0),
s+=IF( c3==".$res[2].",1,0),
s+=IF( c4==".$res[3].",1,0),
s+=IF( c5==".$res[4].",1,0)
ORDER BY s DESC
") or die(MysqL_error());
?>

解决方法:

你可以简单地做:

SELECT
  awards_Votes.*,
    (c1 = {$res[0]})
    + (c2 = {$res[1]})
    + (c3 = {$res[2]})
    + (c4 = {$res[3]})
    + (c5 = {$res[4]})
    AS num_matches
FROM awards_Votes
ORDER BY num_matches DESC

这是有效的,因为布尔表达式(c1 = somevalue)在MysqL中返回0或1.将这些添加在一起会给出匹配的总数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐