gpt4 book ai didi

mysql - SQL 查询汇总同一主机上多个数据库的计数

转载 作者:可可西里 更新时间:2023-11-01 07:07:54 24 4
gpt4 key购买 nike

这看起来应该是简单可行的,但我并不聪明。我试图通过单个查询来汇总同一服务器上多个数据库中的主机数。汇总主机计数的数据库本身来自查询。

获取数据库列表:

mysql> select name from db1.companies where status = 'active';
+---------------------+
| name |
+---------------------+
| companyA |
| companyB |
| companyC |
...

从每个数据库中获取主机计数的总和:

SUM(
select count(id) from companyA.hosts
select count(id) from companyB.hosts
select count(id) from companyC.hosts
...
)

最佳答案

您必须使用准备好的语句来获得所需的结果:

SELECT
GROUP_CONCAT(
CONCAT(
'(SELECT count(id) FROM `',
name,
'`.`hosts`)') SEPARATOR ' + ')
FROM
db1.companies
WHERE
status = 'active'
INTO @sql;

SET @sql := CONCAT('SELECT ', @sql);

SELECT @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
来自 SELECT @sql

输出:

@sql
-------------------------------------------------------------------------
SELECT (SELECT count(id) FROM `companyA`.`hosts`) +
(SELECT count(id) FROM `companyB`.`hosts`) +
(SELECT count(id) FROM `companyC`.`hosts`)

因此,@sql 变量保存了需要执行以获得所需结果的动态 sql 语句。

Demo here

关于mysql - SQL 查询汇总同一主机上多个数据库的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com