如何将变量用作SELECT语句的列名

时间:2015-03-18 01:17:10

标签: mysql

我无法在SELECT语句中使用先前定义的表示列名的变量,需要一些帮助。

TABLE:

main | i1 | i2 ||..........| i24  | i25 |
.
. 
17 | 121 | 123| .........
19 | 123 | 212| .........   | 4832 | 56392 |

从之前的SELECT / SET语句@indent变量等于25.因为我不能使用整数作为列名,所以列是表索引中的i1 - i25。但是,当我尝试在SELECT语句中使用@VARIABLE时,我得到以下结果:

SET @colindex1=(CONCAT(i, @indent);    
SELECT @colindex1 FROM tableindex WHERE main=19;

结果

| @colindex1 |
|  i25  |

应该是细胞的价值:

| i25  |
| 56392|

所以下一个附件是使用DECLARE语句。

DECLARE @colindex1 VARCHAR;

但是我收到了以下错误:

  

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行'declare @ colindex1 INT'附近使用正确的语法

我需要将我的整数(25)值与列“i25”的字母(i)组合,然后将它用作SELECT语句。但是我现在失败了。

有人可以提供帮助

基于此处的答案是使用指定的语法和错误进行的测试:

SET @indent = 1+24; 
SET @colindent1 = (SELECT CONCAT('i', @indent)); 
set @stmt = (SELECT @colindent1 FROM tableindex WHERE main=19);
 PREPARE thestmt FROM @stmt; 

ERROR 1064(42000):..在第1行AAAAHH附近'i25'!我做错了什么?

但是:

set @stmt = (SELECT i25 FROM tableindex WHERE main=19);
Query OK, 0 rows affected (0.00 sec)

1 个答案:

答案 0 :(得分:0)

要使用变量表示列(或表),需要使用PREPARE / EXECUTE。 尝试这样的事情:

    SET @colindex1=(CONCAT(i, @indent);    
    SET @stmt = 'SELECT @colindex1 FROM tableindex WHERE main=19';
    PREPARE thestmt FROM @stmt;
    EXECUTE thestmt;