sql - 使用 group by 更新同一个表中的两列?
问题描述
我在一个表中有两个空列。我想根据条件填充这些列。第一列应使用击球手的总 HR 进行更新。第二列应更新为最高击球率。我试过了:
UPDATE Spring_2021_BaseBall.dbo.People
SET [Total_HR] = (SELECT SUM(HR)
FROM Spring_2021_BaseBall.dbo.Batting
GROUP BY playerid),
[High_BA] = (SELECT playerID,
FROM Spring_2021_BaseBall.dbo.Batting
GROUP BY playerid) B
WHERE A.playerid = B.playerid
有什么想法吗?
解决方案
使用聚合将它们组合在一起:
UPDATE p
SET Total_HR = b.Total_HR,
High_BA = b.High_BA
FROM Spring_2021_BaseBall.dbo.People p JOIN
(SELECT SUM(HR) as SUM_hr, MAX(BA) as High_BA
FROM Spring_2021_BaseBall.dbo.Batting
GROUP BY playerid
) b
ON b.playerid = p.playerid ;
推荐阅读
- php - 如何使用 codeigniter 插入循环数据
- node.js - 是否有用于将 epub 书籍转换为 pdf 的 nodejs 模块?
- python - 有没有办法使用 python 将一个大的 json 文件转换为 csv 格式
- php - 在 PHP 中重定向的正确方法是什么
- ruby-on-rails - 找不到具有 'id'=admin 的用户
- serial-port - minicom 中默认的扩展时间戳
- java - 如何通过纬度和经度在谷歌地图上显示多个位置?
- firebase - 如何以正确的方式在 Firebase Cloud-Functions 中实施 GeoFirestore?
- jquery - 如何将属性 href 复制到另一个“a”元素 [JQUERY]
- python - django 可解构装饰器静态方法