首页 > 解决方案 > 在MySQL中设置变量等于列

问题描述

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

标签: mysqlsql

解决方案


这是您可以在 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;

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

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


推荐阅读