我正在尝试将Player_Season
列设置为等于表的Year
列。我知道如何在没有变量的情况下执行此操作,但是我不太了解MySQL中的变量,并且想知道如何出于教育目的执行此操作。当我仅输入一个数字代替Year
时,它会影响行。但是,当我输入列名时,错误显示为Unknown column 'Player_Season' in 'field list
SET @var_name = `Year`;
UPDATE retrosheet.batting_table SET Player_Season = @var_name WHERE id IS NOT NULL;
答案 0 :(得分:0)
这是您可以在SQL Server中执行的操作...对吗?
否,您不能在任何品牌的SQL数据库中使用变量或预准备的语句参数作为列名。
您可以内插列名称为字符串,并从中准备语句。这是在MySQL中工作的示例:
SET @var_name = 'Year';
SET @myquery = CONCAT('UPDATE retrosheet.batting_table SET Player_Season = ',
@var_name, ' WHERE id IS NOT NULL';
PREPARE stmt FROM @myquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
重要的是,所有表和列都必须在准备时固定。
您只能在要在查询中放置常量值的地方使用变量和参数,例如带引号的字符串文字,带引号的日期文字或数字文字。