似乎最后一个子选择无法引用FROM
子句中定义的嵌套查询。
在这种情况下,您有多种解决方案:
- 在第二个中复制第一个子选择(并希望性能不会太差)
- 定义一个视图以使嵌套查询随处可用
- 当您正在寻找最大值时,您可以对数据进行排序并只取第一行
- 如果您不在 MySQL 上,则可以使用该
WITH
语句
复制适用于任何情况:
SELECT Rel.total
FROM (
SELECT H.number, H.teamname, SUM(H.numberofgoals) AS total
FROM HaveGoal H
GROUP BY H.number,H.teamname
) AS Rel
WHERE Rel.total = (
SELECT MAX(Rel2.total)
FROM (
SELECT H.number, H.teamname, SUM(H.numberofgoals) AS total
FROM HaveGoal H
GROUP BY H.number,H.teamname
) AS Rel2
)
排序后的第一行要短得多,但MAX
隐含的是:
SELECT Rel.total
FROM (
SELECT H.number, H.teamname, SUM(H.numberofgoals) AS total
FROM HaveGoalTest H
GROUP BY H.number,H.teamname
) AS Rel
ORDER BY total DESC
LIMIT 1