如何在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
相关产品推荐
相关产品推荐

