PHP SQL请求:仅选择name=$name和stage=$stage的最低时间值
大家好,我已经有了一个php脚本来处理这个问题,但是它使用了大量的数据来完成一个非常简单的任务,所以我真的很想改进它 我的问题如下:我有一个SQL数据库构建,如 我想提出这样的要求: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参
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的查询可能会对性能产生影响。查看更多信息。