sql - 子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或
问题描述
我正在尝试将城市表更新为 City + #p + 'Number of player of Team'+ #g + 'Number of Goals' 但有一个解决方案,包括 IN 和 EXISTS 运算符,但不能解决我的问题。
UPDATE Team set City = City +'#p'+ CONVERT(nvarchar(10),(select COUNT(p1.PlayerID)
from Team as t
inner join PlayerTeam as pt on pt.TeamID= t.TeamID
inner join Player as p1 on p1.PlayerID= pt.PlayerID
where pt.Season = '13-14'
group by t.Name) )
+ '#g' +
CONVERT(nvarchar(10),(select Count(g.PlayerID)
from Team as t
inner join PlayerTeam as pt on pt.TeamID = t.TeamID
inner join Player as p1 on p1.PlayerID= pt.PlayerID
inner join Goals as g on g.PlayerID = p1.PlayerID
where pt.Season = '13-14'
group by t.Name))
解决方案
您的子查询正在尝试使用包含更新的每一行的每个团队计数的结果集,这是没有意义的,因此会出现错误。您需要使用正在更新的行的 ID。
UPDATE Team
SET City = T.City + '#p' + CONVERT(nvarchar(10), COUNT(DISTINCT pt.PlayerId)) + '#g' + CONVERT(nvarchar(10), COUNT(pt.PlayerId))
FROM Team as T
INNER JOIN PlayerTeam as PT ON PT.TeamID = T.TeamID AND PT.Season = '13-14'
INNER JOIN Goals as G ON G.PlayerId = PT.PlayerId
推荐阅读
- amazon-web-services - Cloudformation 无法将输出参数与嵌套堆栈一起使用
- r - 在 R 中,如何从更大的数据集创建单独的时间序列(循环波谷并运行 Mann-Kendall 测试)?
- python - str在django中没有添加对象
- c - 在 C 中迭代 Char 数组元素
- scala - 多行字符串到 Spark Dataframe 没有中断
- ecmascript-6 - 目前,如果我们需要对 iterable 或 iterator 执行 reduce 或 forEach,我们是否只需要对其进行 polyfill?
- node.js - 未捕获的错误:[$injector:modulerr] http://errors.angularjs.org/1.7.9/$injector/moduler
- directx-12 - 需要多少栅栏才能在 DirectX 12 中支持多个运行中的帧,每个帧都使用多个命令队列?
- node.js - Node.js fs-extra 只复制部分文件复制
- linux - 如何从 bz2 存档中获取文件列表(ls 命令)?