我无法在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)
答案 0 :(得分:0)
要使用变量表示列(或表),需要使用PREPARE / EXECUTE。 尝试这样的事情:
SET @colindex1=(CONCAT(i, @indent);
SET @stmt = 'SELECT @colindex1 FROM tableindex WHERE main=19';
PREPARE thestmt FROM @stmt;
EXECUTE thestmt;