设置变量等于MySQL中的列

时间:2019-04-30 15:45:42

标签: mysql sql

我正在尝试将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;

1 个答案:

答案 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;

重要的是,所有表和列都必须在准备时固定。

您只能在要在查询中放置常量值的地方使用变量和参数,例如带引号的字符串文字,带引号的日期文字或数字文字。