繁体   English   中英

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

[英]how to create an incrementing variable in a table using existing variable in table

我想知道是否有人可以帮助我向使用现有列在MySQL中创建的表添加递增变量(列)。 我能够创建一张起始投手日志的表,其中包括他们在多个赛季中开始的每场比赛所允许的起始投手的奔跑,赢得的奔跑,局限的投掷,允许的本垒打,命中率等。 我是从我设置的MySQL中MLB数据的回溯数据库中得出的。 我用来从数据库设置该表的代码如下:

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;

所以,再次,我现在要做的是在此表中添加列,每个列反映该表中已经存在的变量的季节最新累积总和(如获得的奔跑,局限等)。 该表中的变量显示该给定游戏的每个变量的值。 例如,使用给定赛季开始后每个投手投掷的局数,我想反映出从该赛季初到该赛季他们打过的任何比赛,由该起始投手投出的局数。

有人可以帮助我使用代码创建这些递增变量(列),以使用此表中已存在的列中的值反映每个游戏的季节最新值吗?

我开始学习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

我知道这是不对的,但不知道如何对其进行更改才能使其正常工作

帮助将大有帮助。

说明:感谢您突出显示这些选项。 当我阅读它们时,我意识到我应该澄清表的外观以及我所寻找的内容。 我有一列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; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM