gpt4 book ai didi

mysql - 跨多个数据库选择和添加值

转载 作者:行者123 更新时间:2023-11-29 12:07:39 24 4
gpt4 key购买 nike

-- 漫步--

我只是在脑海中为一个可能的项目进行一些假设的设置,只要我有空闲时间,我就会尝试做这个项目。基本上我只是要创建一个简单的动态网站,用户可以在其中注册并托管他们自己的用 PHP 生成的网站。我以前已经这样做过,但是现在我已经了解了很多关于 OOP 的知识,我想再试一次,而不会让源代码变得困惑。

-- 闲逛结束 --

基本上,我想知道的是如何跨多个数据库选择值并使用它们执行逻辑。例如,假设我有 3 个数据库,布局如下:

website_1
|_ Users
website_2
|_Users
website_3
|_Users

在此示例中,Users 表将由两列组成。 (ID, Points),两者都是 INT(11) NOT NULL 值。

查询应返回数据库名称、用户数量以及用户积分总和。例如:

+-----------+------------+--------------+
| Database | user_count | total_points |
+-----------+------------+--------------+
| Website_1 | 3 | 2170 |
| Website_2 | 7 | 4020 |
| Website_3 | 2 | 1480 |
+-----------+------------+--------------+

经过一些研究,我发现查询函数“DB_NAME()”应该返回数据库的名称,但是任何执行它的尝试都会给我带来以下错误:

FUNCTION website_1.DB_NAME does not exist

编辑:DB_NAME() 用于 SQL SERVER::DATABASE() 在 MySQL 中返回受尊重的结果。

虽然我知道如何使用 SELECT COUNT(ID)SELECT SUM(Points),但我不确定如何添加多个数据库中的值。我在这里完全失去了想法。我想到的查询的最终结果应该如下所示:

+-----------+------------+--------------+
| Database | user_count | total_points |
+-----------+------------+--------------+
| Website_1 | 3 | 2170 |
| Website_2 | 7 | 4020 |
| Website_3 | 2 | 1480 |
+-----------+------------+--------------+
| Totals | 12 | 7670 |
+-----------+------------+--------------+

最佳答案

我认为您不应该尝试在纯 SQL 中执行此操作。我认为最好的方法是在 PHP 代码中从服务器选择数据库 (SHOW DATABASES;),然后收集您需要查询的数据库并循环执行以下操作:

$sql = 'SELECT  "'.$database.'", COUNT(ID), SUM(Points) FROM '.$database.'.USERS;'

将输出打印到表格(同时您也可以对其求和),然后打印总计。

如果您希望将其缓存在表中,您可以为其创建一个表,在循环之前截断它,然后将结果插入其中(INSERT SELECT..),然后您可以选择从中得出的结果。然后您可以添加一些 cronjob 或每 X 分钟刷新该表的内容。但我认为这些查询并没有慢到需要缓存的程度。 (如果您没有更多数千个数据库)。

关于mysql - 跨多个数据库选择和添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205464/

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