gpt4 book ai didi

mysql - 连接作为表的特定字段一部分的子字符串以创建新字段的正确代码

转载 作者:行者123 更新时间:2023-11-29 06:20:01 26 4
gpt4 key购买 nike

我在 Mac OS X 上使用 MySQL 5.6.26 和 Sequel Pro。我想在表 starting_pitcher_game_log 中创建一个名为 Game_date 的新字段。为了创建该字段,我必须从该表中名为 GAME_ID 的另一个字段中提取并附加子字符串。这是我的代码:

ALTER TABLE starting_pitcher_game_log ADD Game_date INTEGER;
UPDATE starting_pitcher_game_log
SET Game_date = CONCAT(SUBSTR(GAME_ID,4,4),'-',SUBSTR(GAME_ID,10,2),'-',SUBSTR(GAME_ID,12,2))
FROM game
WHERE game.GAME_ID = starting_pitcher_game_log.GAME_ID

我收到以下错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM game WHERE game.GAME_ID = starting_pitcher_game_log.GAME_ID' at line 3

有人可以就这里的代码有什么问题提供指导吗?

如果您需要更多信息,请告诉我。

提前谢谢你。

Subin 代码更改后的状态更新:感谢您的帮助苏斌。不工作。我删除了具有空值的字段。然后我输入你的原始代码:

ALTER TABLE starting_pitcher_game_log ADD Game_date INTEGER;
更新 starting_pitcher_game_log
INNER JOIN game ON game.GAME_ID = starting_pitcher_game_log.GAME_ID
SET starting_pitcher_game_log.Game_date = CONCAT(SUBSTR(game.GAME_ID,4,4),'-',SUBSTR(game.GAME_ID,10,2),'-',SUBSTR(gam‌ e.GAME_ID,12,2))

它给出了一个错误:“字段列表”中的未知列“starting_pitcher_game_log.Game_date”。当我在“ADD”之后添加“COLUMN”时,查询运行但只向列添加空值。

我不确定我做错了什么。

view of sequel pro of MySQL database table in question "starting_pitcher_game_log"

Subin,根据您的更改,查询每次都会运行,但它仍然会在 Game_id 列的每一行保留“null”。以上是 starting_pitcher_game_log 表的表内容 View 的屏幕截图。 “Game_ID”列在那里,这就是我一直试图从中提取信息以创建 Game_date 列的地方——日期在字符编号 4 到 11 之间表示。我不确定这是否有帮助。

无论如何,感谢您的帮助。

更新:

这是有效的代码:

ALTER TABLE retrosheet.starting_pitcher_game_log ADD COLUMN Game_Date DATE;
UPDATE retrosheet.starting_pitcher_game_log AS b,
retrosheet.game AS g
SET b. Game_Date = CONCAT(SUBSTR(g.`GAME_ID`,4,4),'-',SUBSTR(g.`GAME_ID`,8,2),'-',SUBSTR(g.`GAME_ID`,10,2))
WHERE b.`Game_ID` = g.`GAME_ID`

最佳答案

您可以将 JOIN 与您的 UPDATE() 一起使用。

ALTER TABLE starting_pitcher_game_log ADD Game_date VARCHAR(15);
UPDATE starting_pitcher_game_log
INNER JOIN game ON game.`GAME_ID` = starting_pitcher_game_log.`GAME_ID`
SET starting_pitcher_game_log.`Game_date` = CONCAT(SUBSTR(game.`GAME_ID`,4,4),'-',SUBSTR(game.`GAME_ID`,10,2),'-',SUBSTR(game.`GAME_ID`,12,2))

不使用 JOIN 关键字实现相同结果的替代方法。

UPDATE starting_pitcher_game_log ,game
SET starting_pitcher_game_log.`Game_date` = CONCAT(SUBSTR(game.`GAME_ID`,4,4),'-',SUBSTR(game.`GAME_ID`,10,2),'-',SUBSTR(game.`GAME_ID`,12,2))
WHERE game.`GAME_ID` = starting_pitcher_game_log.`GAME_ID`

希望这对您有所帮助。

关于mysql - 连接作为表的特定字段一部分的子字符串以创建新字段的正确代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com