sql - 一级方程式数据库 - 无法让积分奖励系统工作
问题描述
我想通过这个问题的标题,您已经知道我的问题是什么。
自上周以来,我一直被困在这部分,我似乎无法找到解决方案。
这是我的代码:
CREATE TABLE Grand_Prix(
ID INTEGER PRIMARY KEY IDENTITY,
Name VARCHAR(45),
Data_GP DATE,
Points INTEGER,
Position INTEGER,
Track_id INTEGER REFERENCES Track(ID),
Country_id INTEGER REFERENCES Country(ID),
Driver_id INTEGER REFERENCES Driver(ID)
)
那是我的大奖赛表,积分和位置在哪里,然后我做了一些插入,如下所示:
INSERT INTO Grande_Premio(Name, Data_GP, Track_id, Country_id, Driver_id, Position)
VALUES ('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 1, 20),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 2, 16),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 3, 18),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 4, 14),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 5, 11),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 6, 12),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 7, 9),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 8, 17),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 9, 15),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 10, 10),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 11, 13),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 12, 19),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 13, 7),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 14, 4),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 15, 8),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 16, 6),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 17, 5),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 18, 2),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 19, 3),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 20, 1)
之后,我进行更新,以便在 X 位置完成的车手获得 X 分:
UPDATE Grand_Prix
SET Points += 25
WHERE Position = 1
UPDATE Grand_Prix
SET Points += 18
WHERE Position = 2
UPDATE Grand_Prix
SET Points += 15
WHERE Position = 3
UPDATE Grand_Prix
SET Points += 12
WHERE Position = 4
UPDATE Grand_Prix
SET Points += 10
WHERE Position = 5
UPDATE Grand_Prix
SET Points += 8
WHERE Position = 6
UPDATE Grand_Prix
SET Points += 6
WHERE Position = 7
UPDATE Grand_Prix
SET Points += 4
WHERE Position = 8
UPDATE Grand_Prix
SET Points += 2
WHERE Position = 9
UPDATE Grand_Prix
SET Points += 1
WHERE Position = 10
然而,在此之后,当我在 Grand_Prix 表上选择时,点仍然显示为 NULL,知道为什么吗?
我对 SQL 和这个网站有点陌生,所以如果我不能很好地表达自己,或者我只是犯了一个我没有看到的非常基本的错误,我很抱歉。
谢谢阅读!
解决方案
您可以使用case
表达式
update grand_prix
set points += (case when position = 1 then 25
when position = 2 then 18
. . .
else 0
end);
推荐阅读
- spss - 重复测量 3+ 组比较百分比
- python - Python:如何更改键盘记录器中的键盘布局?
- php - 使用 PHP 解码 CS:GO 比赛共享代码
- multithreading - OpenMP 不使用所有线程/Clion/Windows
- django-views - Django-registration - 如何检查数据库中是否存在电子邮件
- python - 'nim' 游戏的 Keras 神经网络模型
- c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TABLE”中插入标识列的显式值 异常更新我的表
- bash - 使用 curl 登录 php 站点
- vue.js - Vue - 从一个组件访问属性到另一个组件
- c++ - 为什么 if 语句忽略命令行参数?