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|
+----+---------+------------+------------+--------+