Php 将每行数据库值与我自己的值进行比较

Php 将每行数据库值与我自己的值进行比较,php,mysql,database,Php,Mysql,Database,我有点困惑,我希望你们能帮我解决这个问题,这是我能做的最好的类比,让它更有意义:假设一个数据库存储了所有用户对篮球比赛的预测,所以列可以是 id, user, homeTeamScore, visitingTeamScore, pointTotal 我如何才能首先看到他们预测的homeTeamScore和visitingTeamScore是否完全正确,如果不是,他们预测的赢家是否正确(即,如果主队获胜,他们的homeTeamScore-awayTeamScore>0)。另外,我如何增加poin

我有点困惑,我希望你们能帮我解决这个问题,这是我能做的最好的类比,让它更有意义:假设一个数据库存储了所有用户对篮球比赛的预测,所以列可以是

id, user, homeTeamScore, visitingTeamScore, pointTotal
我如何才能首先看到他们预测的
homeTeamScore
visitingTeamScore
是否完全正确,如果不是,他们预测的赢家是否正确(即,如果主队获胜,他们的homeTeamScore-awayTeamScore>0)。另外,我如何增加pointTotal(基于第一种情况,我会比基于第二种情况增加更多,因为这是一个更准确的预测)

如果我不清楚,我很抱歉;如果是这样的话,请让我知道,我会尽力重申。显然,由于我的问题的性质,我没有寻找非常具体的问题答案;一些用于比较数据库值的SQL查询/PHP代码结构会有很大帮助。再次感谢


编辑:我真的希望我能选择你的两个答案,或者至少把它们都选上,但唉,我没有15%的声誉。它完全按照我想要的那样工作,所以我感谢你们

您可以使用CASE或IF

在这些例子中,我假设主队得了98分,客队得了95分。正确得10分,否则得5分

大小写语法:

UPDATE predictions SET pointTotal = CASE WHEN homeTeamScore = 98 AND visitingTeamScore = 95 THEN 10 ELSE 5 END
如果语法:

UPDATE predictions SET pointTotal = IF(homeTeamScore = 98 AND visitingTeamScore = 95, 10, 5)
您还可以(a)嵌套条件和(b)使用表达式而不是硬编码点号。例如:

UPDATE predictions SET pointTotal = 
  IF(homeTeamScore = 98 AND visitingTeamScore = 95, 
    10, 
    IF(homeTeamScore > visitingTeamScore, 
      GREATEST(1, 5-ABS((homeTeamScore - visitingTeamScore)-(98-95)), 
      0
    )
  )

在本例中,完全正确得10分,预测客队获胜得0分,预测主队获胜得1分到5分(准确分数是根据你预测的价差与实际价差计算得出的)。

考虑以下几点

  DROP TABLE IF EXISTS my_table;

  CREATE TABLE my_table
  (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  ,user VARCHAR(12) NOT NULL
  ,home_score INT NOT NULL
  ,away_score INT NOT NULL
  );

  INSERT INTO my_table (user,home_score,away_score) VALUES
  ('Alice',104,87),
  ('Ben',86,107),
  ('Charlie',92,111),
  ('Dave',96,98),
  ('Ellen',110,95);
让我们假设克罗伊登飞行队在主场被伊灵鹰队以92比111击败

  SELECT *
       , CASE WHEN (home_score,away_score)  = (92,111) THEN 3 
              WHEN home_score < away_score THEN 2 
              ELSE 0 
              END points 
    FROM my_table;
  +----+---------+------------+------------+--------+
  | id | user    | home_score | away_score | points |
  +----+---------+------------+------------+--------+
  |  1 | Alice   |        104 |         87 |      0 |
  |  2 | Ben     |         86 |        107 |      2 |
  |  3 | Charlie |         92 |        111 |      3 |
  |  4 | Dave    |         96 |         98 |      2 |
  |  5 | Ellen   |        110 |         95 |      0 |
  +----+---------+------------+------------+--------+
选择*
,情况是(主场得分、客场得分)=(92111)然后是3
当主场得分<客场得分时,则为2
其他0
终点
从我的桌子上;
+----+---------+------------+------------+--------+
|id |用户|主场|客场|得分|
+----+---------+------------+------------+--------+
|1 |爱丽丝| 104 | 87 | 0|
|2 |本| 86 | 107 | 2|
|3 |查理| 92 | 111 | 3|
|4 |戴夫| 96 | 98 | 2|
|5 |艾伦| 110 | 95 | 0|
+----+---------+------------+------------+--------+