我在做一个项目的时候用到一个这样的查询
其中一条记录里有一个名为answer_count的字段,里面记录的都是数字,我想从表中随机的抽取5条记录,同时让这五条记录的answer_count字段值加起来为50这个条件;这个语句我只写了一般 也就是能够随即的得到5条记录,但是满足后面的条件就写不出来了,请大侠们多多指教
select * from tiankong order by rand() limit 5 ;随即取得5条记录 成功执行
select * from tiankong order by rand() limit 5 group by __不知道如何写___ having sum(answer_count)=7;失败
其中一条记录里有一个名为answer_count的字段,里面记录的都是数字,我想从表中随机的抽取5条记录,同时让这五条记录的answer_count字段值加起来为50这个条件;这个语句我只写了一般 也就是能够随即的得到5条记录,但是满足后面的条件就写不出来了,请大侠们多多指教
select * from tiankong order by rand() limit 5 ;随即取得5条记录 成功执行
select * from tiankong order by rand() limit 5 group by __不知道如何写___ having sum(answer_count)=7;失败
解决方案 »
- MYSQL动态创建表名,表名由存储过程参数带入
- MySQL有没有最大匹配某字符串的函数
- mysql简单的建表出错~~~本人比较菜鸟,望高手指点!!!
- 远程连接mysql"Can't connect to mysql server on IP(10060)"
- informaiton_schema库的statistics干什么用的
- 求助,存储过程又有问题
- 有没有办法可以把查询到的数据随机排列?
- 有什么错么?为什么mysql下老是错?
- 局域网内mysql远程连接mysql数据库服务器不让,什么原因啊?
- 请各位大侠帮忙,怎样卸载mysql?
- 表数据迁移问题
- 怎么将MySQL中很多类似的表统一到一个表中
select *
from tiankong t1,tiankong t2,tiankong t3,tiankong t4,tiankong t5
where t1.answer_count+t2.answer_count+t3.answer_count+t4.answer_count+t5.answer_count = 50
and t1.id<t2.id
and t2.id<t3.id
and t3.id<t4.id
and t4.id<t5.id
一般来说的算法(在N个数中间找出M个数之各恰为X),是通过程序来递归实现。 网上有现在的程序算法,不建议在数据库中来实现。即使用程序也是很消耗资源的。
这种方法走不通。
这个语句的机制是先让MYSQL随机选5条记录(记住这个时候记录已经选好!)然后再判断它们的和是否=50其实你想想如果你手工来做会怎么做?
$mysql=new mysql();
$con=$mysql->connect(); $sql_tiankong="select * from tiankong where del='false' order by rand() limit 5";
$tiankong_contants=$mysql->dosql($con,$sql_tiankong);
$lang=count($tiankong_contants);
$kong_count=0;//填空的个数
for($i=0;$i<$lang;$i++)
{
echo $tiankong_contants[$i][4];
$kong_count=$kong_count+$tiankong_contants[$i][4];
}
echo $kong_count;
if($kong_count==50)//要求的空为10个
{
echo "找到了";
}
else
{
findTiankong();
}
function findTiankong()//查询到合适的填空题
{
$mysql=new mysql();
$con=$mysql->connect(); $sql_tiankong="select * from tiankong where del='false' order by rand() limit 5";
$tiankong_contants=$mysql->dosql($con,$sql_tiankong);
$lang=count($tiankong_contants);
$kong_count=0;//填空的个数
for($i=0;$i <$lang;$i++)
{
echo $tiankong_contants[$i][4];
$kong_count=$kong_count+$tiankong_contants[$i][4];
}
echo $kong_count;
if($kong_count==50)//要求的空为10个
{
echo "找到了"; }
else
{
findTiankong();
}