为了账号安全,请及时绑定邮箱和手机立即绑定

一次查询多个数据库

一次查询多个数据库

牛魔王的故事 2019-10-21 11:10:04
我在各自的数据库中都有WordPress实例。要进行更新,我需要查询所有活动插件,这些插件存储在表“ wp_options”中,可通过以下方式访问WHERE option_name='active_plugins'如何访问所有活动的插件设置(分布在多个数据库中)并将其输出到一个SQL结果中?我知道database.tablename语法,但是如何使用上面的Where语句从那里继续?单个数据库中的请求如下所示:SELECT option_value  FROM `database`.`wp_options` WHERE option_name="active_plugins"
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

SELECT option_value

 FROM `database1`.`wp_options`

  WHERE option_name="active_plugins"

UNION

SELECT option_value

 FROM `database2`.`wp_options`

  WHERE option_name="active_plugins"


查看完整回答
反对 回复 2019-10-21
?
MMTTMM

TA贡献1869条经验 获得超4个赞

Pentium10的解决方案很好,但是它的缺点是您必须为要包含的每个架构扩展查询。以下解决方案使用一条准备好的语句为MySQL服务器上具有该表的所有模式生成结果集wp_options。这对您来说应该更方便。


DROP PROCEDURE IF EXISTS `MultipleSchemaQuery`;


DELIMITER $$


CREATE PROCEDURE `MultipleSchemaQuery`()

BEGIN

    declare scName varchar(250);

    declare q varchar(2000);


    DROP TABLE IF EXISTS ResultSet;

    create temporary table ResultSet (

     option_value varchar(200)

    );


    DROP TABLE IF EXISTS MySchemaNames;

    create temporary table MySchemaNames (

        schemaName varchar(250)

    );


    insert into MySchemaNames

    SELECT distinct

        TABLE_SCHEMA as SchemaName

    FROM 

        `information_schema`.`TABLES`  

    where 

        TABLE_NAME = 'wp_options';


label1:

    LOOP

        set scName = (select schemaName from MySchemaNames limit 1);

        set @q = concat('select option_value from ', scName, '.wp_options where option_name=\'active_plugins\'');

        PREPARE stmt1 FROM @q;

        EXECUTE stmt1;

        DEALLOCATE PREPARE stmt1;


        delete from MySchemaNames where schemaName = scName;

        IF ((select count(*) from MySchemaNames) > 0) THEN

            ITERATE label1;

        END IF;

        LEAVE label1;


    END LOOP label1;


    SELECT * FROM ResultSet;


    DROP TABLE IF EXISTS MySchemaNames;

    DROP TABLE IF EXISTS ResultSet;

END

$$


DELIMITER ;


CALL MultipleSchemaQuery();


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 540 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信