0

我的数据库名称是 test,我有一个名为 HaveGoal 的表。我正在查询这个:

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(Rel.total )来自相对)

它给出:ERROR 1146 (42S02): Table 'test.Rel' 不存在

4

1 回答 1

0

似乎最后一个子选择无法引用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
于 2014-11-07T16:26:21.293 回答