SQL 个案更新
SQL Update for cases
我试图在连接两个表后更新列。如果一列与另一列匹配,我想将另一列更改为 'W',如果它已经是 blank/NULL,我想保留它,否则我想将其更改为 'L'。这是我拥有的:
UPDATE user_games
LEFT JOIN games ON user_games.game_key = games.game_id
SET user_games.result = CASE
WHEN user_games.pick = games.winner then 'W';
WHEN games.winner = NULL then NULL;
ELSE 'L';
END;
我收到此错误:#1064 - 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 4 行
附近使用的正确语法
我使用的服务器版本:10.4.20-MariaDB
;
用于表示一个查询的结束,不应在其间使用。
也总是使用 IS
与 null
而不是 =
进行比较
SET user_games.result =
CASE WHEN games.winner IS NULL OR games.winner = '' then NULL
WHEN user_games.pick = games.winner then 'W'
ELSE 'L'
END;
下面的查询是否解决了您的问题?
update a
set a.result =
CASE
WHEN a.pick = b.winner then 'W'
WHEN b.winner = NULL then NULL
ELSE 'L'
END
from user_games a
LEFT JOIN games b ON a.game_key = b.game_id
试试这个:你必须为 L
写一个特定的条件,因为在 ELSE 中它可以在许多条件下更新。此外,使用 IS NULL
来检查列中的 NULL
值而不是 = NULL
。
UPDATE user_games
LEFT JOIN games ON user_games.game_key = games.game_id
SET user_games.result =
CASE
WHEN user_games.pick = games.winner THEN 'W'
WHEN games.winner IS NOT NULL AND user_games.pick <> games.winner THEN 'L'
ELSE NULL
END;
我试图在连接两个表后更新列。如果一列与另一列匹配,我想将另一列更改为 'W',如果它已经是 blank/NULL,我想保留它,否则我想将其更改为 'L'。这是我拥有的:
UPDATE user_games
LEFT JOIN games ON user_games.game_key = games.game_id
SET user_games.result = CASE
WHEN user_games.pick = games.winner then 'W';
WHEN games.winner = NULL then NULL;
ELSE 'L';
END;
我收到此错误:#1064 - 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 4 行
附近使用的正确语法我使用的服务器版本:10.4.20-MariaDB
;
用于表示一个查询的结束,不应在其间使用。
也总是使用 IS
与 null
而不是 =
SET user_games.result =
CASE WHEN games.winner IS NULL OR games.winner = '' then NULL
WHEN user_games.pick = games.winner then 'W'
ELSE 'L'
END;
下面的查询是否解决了您的问题?
update a
set a.result =
CASE
WHEN a.pick = b.winner then 'W'
WHEN b.winner = NULL then NULL
ELSE 'L'
END
from user_games a
LEFT JOIN games b ON a.game_key = b.game_id
试试这个:你必须为 L
写一个特定的条件,因为在 ELSE 中它可以在许多条件下更新。此外,使用 IS NULL
来检查列中的 NULL
值而不是 = NULL
。
UPDATE user_games
LEFT JOIN games ON user_games.game_key = games.game_id
SET user_games.result =
CASE
WHEN user_games.pick = games.winner THEN 'W'
WHEN games.winner IS NOT NULL AND user_games.pick <> games.winner THEN 'L'
ELSE NULL
END;