MySQL存储过程表示select语句中未定义别名
我有下面的语句,它产生了这个错误。显然,select语句第一行中的别名“R”没有声明,但它就在语句的末尾。有人有什么想法吗 #1327-未声明的变量:RMySQL存储过程表示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
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行结束明白了。谢谢你的帮助。