Mysql - 将查询结果用于另一个查询

时间:2014-02-26 13:21:18

标签: mysql procedure information-schema

我想从Information_schema.Columns找到数据库的一些特定列,并编辑这些列类型。我不知道如何使用Information_schema的第一个查询结果进行另一个查询来编辑列。 我也必须在MySQL中完成它,而不是PHP。

我已经阅读了一些关于程序的内容,但这令人困惑。实际上我从来没有用过很多东西。

如果有人能告诉我路径或任何教程,我真的很感激。 提前谢谢

1 个答案:

答案 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;