我想从Information_schema.Columns
找到数据库的一些特定列,并编辑这些列类型。我不知道如何使用Information_schema的第一个查询结果进行另一个查询来编辑列。
我也必须在MySQL中完成它,而不是PHP。
我已经阅读了一些关于程序的内容,但这令人困惑。实际上我从来没有用过很多东西。
如果有人能告诉我路径或任何教程,我真的很感激。 提前谢谢
答案 0 :(得分:1)
这可能就是你要找的东西。动态更改查询:
SELECT CONCAT('ALTER TABLE `my_table` ',
GROUP_CONCAT(' CHANGE COLUMN `', COLUMN_NAME , '` ',
' `', COLUMN_NAME , '` DECIMAL (14,4)'))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_db' AND TABLE_NAME = 'my_table'
INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
您可以使用存储过程中的游标将其应用于所有表。
DECLARE curs CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bDone = 0;
REPEAT
FETCH curs INTO table_name;
IF table_name
/*alter query*/
END IF;
UNTIL bDone END REPEAT;
CLOSE curs;