在几个表中执行相同的查询

时间:2016-08-31 08:16:22

标签: mysql sql

如果存在,如何在mysql中执行一个执行几个表中的句子的查询。例如:

我可以使用以下表格:w_extra_content,w_extra_content_gl,w_extra_content_dn。

有没有办法运行类似的东西:

update name = "example" from w_extra_content * where name = "old_example"

并且在与名称匹配的所有表上执行查询?

在表格中只会改变最终的完成情况,但您可能不知道终止是在数据库中。

它只能在mysql中。

1 个答案:

答案 0 :(得分:1)

使用以下查询

SET @@group_concat_max_len = 1000000;
SET @query := (SELECT GROUP_CONCAT(CONCAT_WS(' ','update ',TABLE_NAME,' set name = \'example\' where name = \'old_example\'') 
                    SEPARATOR ';')
              FROM 
              ( SELECT Table_NAME
              FROM information_schema.tables 
              WHERE TABLE_NAME LIKE 'w_extra_content%') tab);    
     PREPARE stmt FROM @query;
     EXECUTE stmt;
     DEALLOCATE PREPARE stmt ;
     SET @@group_concat_max_len = 1024;