gpt4 book ai didi

PHP/SQL - 很多 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 02:52:15 24 4
gpt4 key购买 nike

在我的网站上,我想使用数据库中的大量不同数据。目前,我正在使用四个查询来收集不同的数据。但是有没有办法让它更高效并将它们放入一个大查询中?我该怎么做?

编辑:所以答案是简单地将所有查询放在一起并在数据库查询中使用尽可能多的数据操作,而不是在 php 中。

$qry = "SELECT COUNT(*) cnt,
AVG(level) avg_lvl,
SUM(IF(onlinestatus=1, 1, 0)) online_cnt,
(SELECT Max(time) FROM refreshes) refresh_time
FROM players";
foreach ($db->query($qry) as $row){
$amount_total = $row['cnt'];
$average_level = floor($row['avg_lvl']);
$online_amount = $row['online_cnt'];
$milliseconds = $row['refresh_time'] + 1800000;
$update_time = DateTime::createFromFormat('U', intval($milliseconds / 1000));
}

最佳答案

您可以将所有查询合并为一个,如下所示:

$qry = "SELECT COUNT(*) cnt,
AVG(level) avg_lvl,
SUM(IF(onlinestatus=1, 1, 0)) online_cnt,
(SELECT Max(time) FROM refreshes) refresh_time
FROM rookstayers";
foreach ($db->query($qry) as $row){
$amount_total = $row['cnt']
$level = $row['avg_lvl'];
$online_amount = $row['online_cnt'];
$milliseconds = $row['refresh_time'] + 1800000;
$update_time = DateTime::createFromFormat('U', intval($milliseconds / 1000));
}

您的最后一个查询似乎假设结果中只有一条记录,因为循环会在每次迭代中覆盖先前的结果。由于该查询中没有 order by,因此结果会是一个赌博。所以我从表中获取了最近的时间,以防那里有多个记录。

请注意,上面的循环只执行一次,因为可以保证从查询中得到恰好一个结果。

关于PHP/SQL - 很多 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473417/

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