MySQL存储过程表示select语句中未定义别名

MySQL存储过程表示select语句中未定义别名,mysql,select,stored-procedures,alias,Mysql,Select,Stored Procedures,Alias,我有下面的语句,它产生了这个错误。显然,select语句第一行中的别名“R”没有声明,但它就在语句的末尾。有人有什么想法吗 #1327-未声明的变量:R CREATE PROCEDURE `get_series_completion`(IN team1_id INT, IN team2_id INT, IN round_shortname VARCHAR(5)) BEGIN DECLARE num_games_total, num_games_played INT; S

我有下面的语句,它产生了这个错误。显然,select语句第一行中的别名“R”没有声明,但它就在语句的末尾。有人有什么想法吗

#1327-未声明的变量:R

    CREATE PROCEDURE `get_series_completion`(IN team1_id INT, IN team2_id INT, IN round_shortname VARCHAR(5))
BEGIN
    DECLARE num_games_total, num_games_played INT;

    SELECT COUNT(*) INTO num_games_played, R.games_per_series INTO num_games_total
    FROM (
        SELECT game_id
        FROM team_games
        WHERE team_id IN (team1_id, team2_id)
        GROUP BY game_id
            HAVING COUNT(*) = 2
            AND SUM(standing = 0) = 0
    ) AS S, rounds AS R ON R.round_shortname = round_shortname;

    SELECT num_games_played/num_games_total;
END$$

您应该选择into子句之前的所有列,您的查询应该是:

SELECT COUNT(*), R.games_per_series INTO num_games_played, num_games_total
    FROM (
        SELECT game_id
        FROM team_games
        WHERE team_id IN (team1_id, team2_id)
        GROUP BY game_id
            HAVING COUNT(*) = 2
            AND SUM(standing = 0) = 0
    ) AS S 
    LEFT OUTER JOIN rounds AS R ON R.round_shortname = round_shortname;


您应该选择into子句之前的所有列,您的查询应该是:

SELECT COUNT(*), R.games_per_series INTO num_games_played, num_games_total
    FROM (
        SELECT game_id
        FROM team_games
        WHERE team_id IN (team1_id, team2_id)
        GROUP BY game_id
            HAVING COUNT(*) = 2
            AND SUM(standing = 0) = 0
    ) AS S 
    LEFT OUTER JOIN rounds AS R ON R.round_shortname = round_shortname;


哦,我试试这个。我将“LEFT JOIN”切换为“,”并忘记更改它。仍然会收到与您发布的内容不同的未声明错误。似乎不喜欢
(+)
<代码>#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near')=round_shortname的正确语法;选择已玩游戏数/总游戏数;在第14行结束明白了。谢谢你的帮助。哦,我试试这个。我将“LEFT JOIN”切换为“,”并忘记更改它。仍然会收到与您发布的内容不同的未声明错误。似乎不喜欢
(+)
<代码>#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near')=round_shortname的正确语法;选择已玩游戏数/总游戏数;在第14行结束明白了。谢谢你的帮助。