表的列数是一个变量i,我是这样写的,但是发现不行...
DECLARE col_name VARCHAR(10);
WHILE i<service_type_count DO
##SET col_name=CONCAT('type',i);
SELECT CONCAT('type',i) INTO col_name;
ALTER TABLE this_month_day ADD COLUMN col_name INT;
SET i=i+1;
END WHILE;
...报错提示已经存在同名的列,意思是说有两个名为“col_name”的列
mysql根本没把col_name当做变量,而是直接把col_name当做列名了
这个该怎么处理?
DECLARE col_name VARCHAR(10);
WHILE i<service_type_count DO
##SET col_name=CONCAT('type',i);
SELECT CONCAT('type',i) INTO col_name;
ALTER TABLE this_month_day ADD COLUMN col_name INT;
SET i=i+1;
END WHILE;
...报错提示已经存在同名的列,意思是说有两个名为“col_name”的列
mysql根本没把col_name当做变量,而是直接把col_name当做列名了
这个该怎么处理?
解决方案 »
- mysql数据库,命令被拒绝的问题(ERROR 1044: Access denied for user ''@'localhost')
- postgres中snapshot会不会覆盖数据库中的系统表
- mysql 1064错误
- 请问如何对分组内部进行排序
- 一个64位的linux操作系统,mysql是5.1,query_cache_size大约设置多少合适,设置标准是什么。
- auto_increment
- MySQL Control Center 连接不到MySQL(急)
- 要查出A表中B字段值最大的前十条记录如何写SQL啊?
- mysql 是否不支持中文名称表名?
- mysql查询卡主问题求助
- 这个索引怎么建才有效率?
- 在问 explian 问题
DECLARE col_name VARCHAR(10);
WHILE i<service_type_count DO
##SET col_name=CONCAT('type',i);
SELECT CONCAT('type',i) INTO col_name;
@sql = concat('ALTER TABLE this_month_day ADD COLUMN ',col_name,' INT');
prepare stmt1 from @sql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
SET i=i+1;
END WHILE;
...
@asql = concat('ALTER TABLE this_month_day ADD COLUMN ',col_name,' INT');
prepare stmt1 from @asql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#sqlps看看这个链接,说得比较详细。