Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL变量不工作_Mysql - Fatal编程技术网

MySQL变量不工作

MySQL变量不工作,mysql,Mysql,我试图学习MySQL变量,并像这样执行命令 SET @target=`name`; SELECT @target FROM transaction_product LIMIT 10; 但这是一个错误,在“字段列表”中说了未知列“name” 为什么它是错误的,我确信在我的字段列表上有列名 这是表格的截图 您需要使用不同的引号“name”来为变量指定字符串,而`name`用于列名: SET @target='name'; 要获取列值,您可以在子句中使用: SELECT `name` INTO @

我试图学习MySQL变量,并像这样执行命令

SET @target=`name`;
SELECT @target FROM transaction_product LIMIT 10;
但这是一个错误,在“字段列表”中说了
未知列“name”

为什么它是错误的,我确信在我的字段列表上有列名

这是表格的截图


您需要使用不同的引号“name”来为变量指定字符串,而
`name
`用于列名:

SET @target='name';
要获取列值,您可以在子句中使用

SELECT `name`
INTO @target
FROM transaction_product
LIMIT 1;
要在单个变量中获取多行,您可以使用
GROUP\u CONCAT

SELECT GROUP_CONCAT(`name`)
INTO @target
FROM transaction_product
LIMIT 10;
要动态执行查询,请执行以下操作:

SET @target='`name`';

SET @query1 = CONCAT('
    SELECT ',@target,'
    FROM transaction_product
    LIMIT 10'
    );
PREPARE stmt FROM @query1; EXECUTE stmt; DEALLOCATE PREPARE stmt;

这是否意味着变量不能用于选择字段名?我看到您硬编码了
name
字段……您不能将列名分配给变量并在select子句中使用该变量。为此,您可以使用PREPARE stmt。
SELECT @target:=`name` FROM transaction_product LIMIT 10;