You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中将子查询最大值赋值给变量?报错求解

问题原因与解决办法

你的错误出在SET变量赋值的语法上:当用SET给变量赋值且右侧是SELECT查询时,必须把整个SELECT语句用圆括号()包裹起来,否则SQL解析器会判定语法不合法。

修正后的代码(方法一:带括号的SET赋值)

DECLARE @Maximo int 
SET @Maximo = (SELECT MAX(A.[Count Equipo])
              FROM 
                  (SELECT 
                       E.IdEquipo, E.Nombre, COUNT(E.IdEquipo) AS 'Count Equipo', 
                       SUM(GolesL) AS 'Gol local', SUM(GolesV) AS 'Gol Vis'
                   FROM 
                       Jornada J
                   LEFT JOIN 
                       Equipo E ON E.IdEquipo = J.Equipo_Local OR E.IdEquipo = J.Equipo_Visitante
                   GROUP BY
                       E.IdEquipo, E.Nombre) A)

替代写法(方法二:直接SELECT赋值)

你也可以跳过SET,直接用SELECT语句给变量赋值,这种写法更简洁:

DECLARE @Maximo int 
SELECT @Maximo = MAX(A.[Count Equipo])
FROM 
    (SELECT 
         E.IdEquipo, E.Nombre, COUNT(E.IdEquipo) AS 'Count Equipo', 
         SUM(GolesL) AS 'Gol local', SUM(GolesV) AS 'Gol Vis'
     FROM 
         Jornada J
     LEFT JOIN 
         Equipo E ON E.IdEquipo = J.Equipo_Local OR E.IdEquipo = J.Equipo_Visitante
     GROUP BY
         E.IdEquipo, E.Nombre) A

两种写法都能正确将子查询返回的数值4赋值给@Maximo变量。

内容的提问来源于stack exchange,提问作者Horacio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:00:54