mysql - 在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;
解决方案
这是您可以在 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;
重要的部分是所有表和列必须在准备时固定。
您只能在查询中放置常量值的地方使用变量和参数,例如带引号的字符串文字、带引号的日期文字或数字文字。
推荐阅读
- cakephp - CakePHP3,在php数组中请求“和”匹配条件
- python - 无法分配给函数调用,python中的语法错误
- amazon-dynamodb - DynamoDB 吞吐量超出异常错误
- c++ - c ++构造函数传递对基类对象的引用
- php - How get previous date from today in mongodb php?
- java - 由于升级标头无效,握手失败:null
- linux - 使用 Find 命令剪切日期以选择日期
- dictionary - 固定大小的Golang并发访问映射/数组
- java - Jsp调用重定向管理
- python - getText() vs text() vs get_text()