表的列数是一个变量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当做列名了
这个该怎么处理?
解决方案 »
- 每秒钟写入10万条记录,能做到不?
- PostgreSQL 与 MySQL 性能大测试(第四节)
- 导出数据后不是乱码,导入后却成了乱码
- 在phpmyadmin点数据库后,怎么多了个输入框???
- mysql_real_connect函数简单问题 !
- 新手问一全文索引的问题
- mysql 频繁插入和查询的造成 cpu 爆满的问题,各位大侠帮帮小弟!
- 如何将命令结果集写入到表中
- mysql 老是闪退
- Linux虚拟机上的MySQL连接服务器端的MySQL,报错:ERROR 1130: Host xxx is not allowed to connect th
- 这个索引怎么建才有效率?
- 在问 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看看这个链接,说得比较详细。