PHP SQL请求:仅选择name=$name和stage=$stage的最低时间值

PHP SQL请求:仅选择name=$name和stage=$stage的最低时间值,php,sql,request,Php,Sql,Request,大家好,我已经有了一个php脚本来处理这个问题,但是它使用了大量的数据来完成一个非常简单的任务,所以我真的很想改进它 我的问题如下:我有一个SQL数据库构建,如 我想提出这样的要求: http://myphppage.php?username=Whataname&stage=1 我希望它能够响应结果,这样,如果我阅读我的php页面内容,我可以阅读以下内容: 21 因此,基本上我只想用用户名和stage作为参数执行请求,我希望它返回列“time”的最低值,其中name=输入的name参

大家好,我已经有了一个php脚本来处理这个问题,但是它使用了大量的数据来完成一个非常简单的任务,所以我真的很想改进它

我的问题如下:我有一个SQL数据库构建,如

我想提出这样的要求:

http://myphppage.php?username=Whataname&stage=1
我希望它能够响应结果,这样,如果我阅读我的php页面内容,我可以阅读以下内容:

21
因此,基本上我只想用用户名和stage作为参数执行请求,我希望它返回列“time”的最低值,其中name=输入的name参数,stage=输入的stage参数

我不是很擅长sql,但我很好,我可以在一两行代码中发出这种sql请求,而不是我现在拥有的这个庞大的脚本

以下是我当前的脚本:

<?php
$q2 = "SELECT username FROM DB WHERE stage='$stage' GROUP BY username ORDER BY time ASC";
$result2 = mysql_query($q2);

$times = array();
$userusernames = array();

$usernames = mysql_fetch_assoc($result2);
while($rows=mysql_fetch_assoc($result2))
{
    $temp = $rows['username'];
    $q3 = "SELECT time FROM DB WHERE stage='$stage' AND username='$temp' GROUP BY time ORDER BY time ASC";
    $result3 = mysql_query($q3);
    while($aaa = mysql_fetch_assoc($result3))
    {
        array_push($times, $aaa['time']);
        array_push($userusernames, $rows['username']);

        if($rows['username']==$username)
        {
            echo $aaa['time'];
        }
        break;
    }

}

您只需一个查询即可存档所需结果:

选择用户名,分钟(时间)作为下限时间
从测试表
其中stage='$stage'和username='$temp'
按用户名分组
按时间订购

您需要
限制1
您的查询:)并通过
删除您的
分组?你可以删除其余的PHP循环,你真的不需要它。。如果您需要不同的值,请使用distinct而不是不正确的group bythx尝试一下,我不知道sql Request中的这个LIMIT参数,所以我尝试了一下:从DB中选择时间,其中stage='$stage'和name='$name'按时间顺序ASC LIMIT 1,它工作得很好,非常感谢!!!我不得不承认,我觉得自己很愚蠢,以前没有想到这一点。。。再次感谢
username
列上没有任何索引,使用LIMIT的查询可能会对性能产生影响。查看更多信息。