sql - 如何将这个 SQL 更新功能合二为一?
问题描述
我想根据来自不同表的团队名称设置两个不同的分数。怎么做?
UPDATE match_detail
SET team_score = 2
WHERE match_id LIKE 'MT010' AND
team_id IN (SELECT team.team_id
FROM team, match_detail
WHERE team.team_id = match_detail.team_id
AND team_name LIKE 'Invictus Gaming');
UPDATE match_detail
SET team_score = 0
WHERE match_id LIKE 'MT010' AND
team_id IN (SELECT team.team_id
FROM team, match_detail
WHERE team.team_id = match_detail.team_id
AND team_name LIKE 'Vici Gaming');
解决方案
UPDATE md
SET md.team_score = CASE WHEN t.team_name = 'Invictus Gaming' THEN 2
WHEN t.team_name = 'Vici Gaming' THEN 0
END
FROM match_detail md
INNER JOIN team t ON t.team_id = md.team_id
WHERE md.match_id LIKE 'MT010'
AND t.team_name IN ('Invictus Gaming' , 'Vici Gaming')
推荐阅读
- python - 根据Python中的键获取排序列表的一部分
- c# - EF Core 上下文是否在运行时保存所有数据库值?
- c# - .Net5 HttpClient 并发 - 性能
- r - 如何在 R 中绘制交互式和专题地图?
- asynchronous - canDeactivate 在异步代码中使用 matDialog
- android - Android Studio 设置静默谷歌登录
- vue.js - 如何使用 Nuxt.js 从“插件”目录提交突变?
- django - 如何在 django 中执行超级用户的任务
- python - 如何在 Python 和 BeautifulSoup 中将标题与 url 链接?
- python-3.x - 如何获取“member.activity”的片段以及如何发送自定义状态(discord.py)