Mysql 单个select语句错误“每个派生表都必须有自己的别名”

Mysql 单个select语句错误“每个派生表都必须有自己的别名”,mysql,sql,mysql-error-1248,Mysql,Sql,Mysql Error 1248,几天来,我一直试图让下面的select语句起作用,但没有任何运气。代码的一个快速总结是,它返回数据库中所有团队的列表,以及每个团队对排名前10的团队的获胜次数。胜利将从包含所有已玩游戏的游戏表中提取。这是我的密码 SELECT IF(@last_ranking <> formula, @current_rankings := @current_rankings + 1, @current_rankings) AS rank, @last_ranki

几天来,我一直试图让下面的select语句起作用,但没有任何运气。代码的一个快速总结是,它返回数据库中所有团队的列表,以及每个团队对排名前10的团队的获胜次数。胜利将从包含所有已玩游戏的游戏表中提取。这是我的密码

SELECT     IF(@last_ranking <> formula, @current_rankings := @current_rankings + 1, @current_rankings)  AS rank, 
            @last_ranking := formula, 
            prequery.team, 
            prequery.formula
FROM        (select @current_rankings := 0) sqlvars, 
            (SELECT    team, 
                        SUM(score) formula 
            FROM (SELECT     g.home_team, 
                            SUM(CASE WHEN t.team_id IS NULL THEN 0 ELSE g.home_wins END) AS formula 
            FROM            games g LEFT JOIN 
                        _top_10 AS t ON g.away_team = t.team_id 
            WHERE       
                        g.season = 2012 AND 
                        g.completed = 1 
        UNION ALL SELECT     g.away_team, 
                        SUM(CASE WHEN t2.team_id IS NULL THEN 0 ELSE g.away_wins END) AS formula 
            FROM        games g LEFT JOIN 
                        _top_10 AS t2 ON g.home_team = t2.team_id 
            WHERE      
                        g.season = 2012 AND 
                        g.completed = 1), 
                            (SELECT @current_rankings := 0, @last_ranking := 0) r 
                GROUP BY team ORDER BY formula DESC ) prequery;
但我一直得到以下错误

错误代码:1248。每个派生表都必须有自己的别名


有人能看出我做错了什么吗。谢谢

由于SELECT语句的对齐,您可能无法添加别名

SELECT  IF(@last_ranking <> formula, @current_rankings := @current_rankings + 1, @current_rankings)  AS rank, 
        @last_ranking := formula, 
        prequery.team, 
        prequery.formula
FROM    (select @current_rankings := 0) sqlvars, 
        (
            SELECT  team, 
                    SUM(score) formula 
            FROM    (
                        SELECT  g.home_team, 
                                SUM(CASE WHEN t.team_id IS NULL THEN 0 ELSE g.home_wins END) AS formula 
                        FROM    games g LEFT JOIN 
                                _top_10 AS t ON g.away_team = t.team_id 
                        WHERE   g.season = 2012 AND 
                                g.completed = 1 
                        UNION ALL 
                        SELECT      g.away_team, 
                                    SUM(CASE WHEN t2.team_id IS NULL THEN 0 ELSE g.away_wins END) AS formula 
                        FROM        games g LEFT JOIN 
                                    _top_10 AS t2 ON g.home_team = t2.team_id 
                        WHERE      
                                    g.season = 2012 AND 
                                    g.completed = 1
                    ) AS AliasHere,  -- <<=== HERE
                    (SELECT @current_rankings := 0, @last_ranking := 0) r 
                GROUP BY team ORDER BY formula DESC 
        ) prequery;

+1.非常好的捕捉,在建议修复时清楚地指出了问题所在。谢谢,在查找问题时,我关注的是联合体中的两个select语句。正确的缩进有助于: