如何使用 table 中的现有变量在 table 中创建递增变量

how to create an incrementing variable in a table using existing variable in table

我想知道是否有人可以帮助我将递增变量(列)添加到我在 MySQL 中使用现有列创建的 table。我能够创建一个 table 首发投手日志,其中包括首发投手的允许跑分、本垒打、投出的局数、允许的本垒打、安打等,对于他们在多个赛季中开始的每场比赛.我从我设置的 MySQL 中的 MLB 数据的 retrosheet 数据库中提取出来的。我用来从数据库中设置这个table的代码如下:

DROP TABLE IF EXISTS starting_pitcher_game_log;
CREATE TABLE starting_pitcher_game_log
SELECT a .PIT_ID
, g.GAME_ID
, IF(g.WIN_PIT_ID = a.PIT_ID,1,0) AS W
, IF(g.LOSE_PIT_ID = a.PIT_ID,1,0) AS L
, a.IP
, a.BFP
, a.H
, a.R
, a.ER
, a.HR
, a.BB
, a.K
, a.IBB
, a.HBP
, a.WP
, a.BALK
FROM (
    SELECT PIT_ID , GAME_ID
    , SUM(EVENT_OUTS_CT)/3 AS IP
    , SUM(IF(BAT_EVENT_FL = "T",1,0)) AS BFP
    , SUM(IF(H_CD>0,1,0)) AS H
    , SUM(IF(BAT_FATE_ID>3,1,0)) AS R
    , SUM(IF(BAT_FATE_ID IN (4,6),1,0)) AS ER
    , SUM(IF(H_CD = 4,1,0)) AS HR
    , SUM(IF(EVENT_CD IN (14,15),1,0)) AS BB
    , SUM(IF(EVENT_CD = 3,1,0)) AS K
    , SUM(IF(EVENT_CD = 15,1,0)) AS IBB
    , SUM(IF(EVENT_CD = 16,1,0)) AS HBP
    , SUM(IF(EVENT_CD = 9,1,0)) AS WP
    , SUM(IF(EVENT_CD = 11,1,0)) AS BALK
    FROM retrosheet.events
    WHERE PIT_START_FL = "T"
    GROUP BY PIT_ID,GAME_ID
) AS a
INNER JOIN retrosheet.games AS g
ON a.GAME_ID = g.GAME_ID;

因此,再次强调,此时我想要做的是向此 table 添加列,每个列都反映 table 中已有变量的季至今累计总和(用于本垒打、投球局数等)。此 table 中的变量显示了给定游戏的每个变量的值。例如,使用每个后续投手在给定赛季开始时投出的局数,我想反映出 运行 首发投手从赛季开始到他们在那个赛季参加的任何比赛中投出的总局数.

有人可以帮助我使用代码创建这些递增变量(列)来反映每场比赛的这些赛季至今值,使用此 table 中已经存在的列中的值吗?

我开始学习了MySQL,但是我的知识还是很欠缺

这是我目前的想法

SET ytd_ip:= 0;
UPDATE starting_pitcher_game_log
SELECT
IF(@prevgame_yr != year_id,ip,@ytd_ip+ip) AS ip,
@prevgame_yr=year_id
FROM retrosheet.starting_pitcher_game_log
WHERE table_id=starting_pitcher_game_log

我知道这是不对的,但不知道如何改变它才能让它发挥作用

帮助会大有帮助。

澄清:感谢您强调这些选项。当我通读它们时,我意识到我应该更清楚地阐明 table 是什么样子以及我在寻找什么。我有一列 PITCHER_ID; GAME_ID 的专栏;以及投球局数、本垒打、允许保送等的列,其中包含每场比赛的每个变量的值(例如,为比赛投球的局数)。在我想创建的赛季至今的列中,我想按投手 ID 列和 GAMES_ID 列对它进行排序,这样值会增加相同的投手在每场比赛中按照投手在给定赛季参加的比赛的日期顺序排列。我如何才能确保本赛季至今一栏中特定比赛的投球局数的值是给定投手在该赛季所有比赛中所投局数的总和 + 局数在那场比赛中投球;然后允许相同的规则应用到将为未来游戏添加的数据?

在此先感谢您的帮助。

试试这个:

ALTER TABLE 'table_name' DROP 'id_increment';

ALTER TABLE 'table_name' ADD 'id_increment' INT NULL, ADD UNIQUE ('id_increment') ;

ALTER TABLE 'table_name' CHANGE 'id_increment' 'id_increment' INT(11) NOT NULL AUTO_INCREMENT;