gpt4 book ai didi

php - 所有表中特定列的 SUM 值 LIKE table_%

转载 作者:行者123 更新时间:2023-11-29 17:49:20 25 4
gpt4 key购买 nike

我需要帮助来创建 SQL 查询,以便对所有表(如 table_%)中的特定列的值求和,因为表会随着时间的推移而增长,并且这必须满足基于以下格式的新表名称

<小时/>

方案名称:database_01

表名称: tb_data_'YEAR'_'MONTH'

<小时/>
  • YEARMONTH 都是 2011 年至 2018 年期间所有 12 个月和年份的值。

每个表都包含一个名为 TOTAL_VALUE 的列。我有一个 php 脚本,可以触发 SQL 查询以从数据库中提取数据。

我想对每个表的 TOTAL_VALUE 列的总和进行求和,并保存下面脚本的值以推送数组。

$sql = "SELECT TOTAL_VALUES FROM tb_data_2017_october";   
$result = mysqli_query($conn, $sql);

$data = array(); while($enr = mysqli_fetch_assoc($result)){
$a = array($enr['TOTAL_VALUES']);
foreach ($a as $as){
echo "'".$as."', ";}
array_push($data, $as); }

我一直在尝试使用以下选项更改 SQL:

SELECT id FROM table1
UNION
SELECT id FROM table2
UNION
SELECT id FROM table3
UNION
SELECT id FROM table4

但是我需要满足检查所有类似 tb_data_% 的表的能力

最佳答案

有关获取表列表的信息,请参阅此问题:Get table names using SELECT statement in MySQL

您可以在一次查询结果中获取表的列表,然后对每个表进行查询。我将稍微修改您的代码以给出一个示例:

// Get the tables
$tables_sql = "SELECT table_name
FROM information_schema.tables
WHERE table_schema='<your DB>'
AND table_name LIKE 'tb_data%'";

$tables = mysqli_query($conn, $sql);

// Iterate over the tables
while($table = mysqli_fetch_assoc($tables)){
{
/*
* Your code
*/

// This query assumes that you can trust your table names not to to an SQL injection
$sql = "SELECT TOTAL_VALUES FROM " . $table['table_name'];
$result = mysqli_query($conn, $sql);

$data = array(); while($enr = mysqli_fetch_assoc($result)){
$a = array($enr['TOTAL_VALUES']);
foreach ($a as $as){
echo "'".$as."', ";
array_push($data, $as); }
}

一旦你有了 table 列表,你就可以做任何你需要做的事情。您可以构建一个大型联合查询(这比单独查询每个表更有效),或者将表提供给 MERGE 引擎,如 barmar's answer 中所示。

关于php - 所有表中特定列的 SUM 值 LIKE table_%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49520677/

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