为了账号安全,请及时绑定邮箱和手机立即绑定

帮我优化一下循环查询数据库

帮我优化一下循环查询数据库

PHP
繁星coding 2019-03-08 02:59:25
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

$data=Db::name($this->name)->field('id',sender)->where($where)->select();

if(empty($data)) return [];

$data_sender_ids=array_unique(array_column($data,'sender'));

$model_member=new Member();

$data_members=$model_member->field(...)
->whereIn('id',$data_sender_ids)
->where(delstatus,'<>',2)
->get();

if(empty($data_members)) return [];

$sender_ids=array_column($data_members,'id');

foreach($data as $key=>$value){
    if(!in_array($value['sender'],$sender_ids)){
    unset($data[$key]);
    }
}

return $data;

两条sql搞定

//我不清楚你的php框架,这段代码你变通一下
$data_members=$model_member->field(...)
->whereIn('id',$data_sender_ids)
->where(delstatus,'<>',2)
->get();
查看完整回答
反对 回复 2019-03-18
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

非常简单,根据你的程序逻辑

select 出结果后,循环取出ID组成多个IDs
然后 where 子句 使用 IN IDs 取出数据

就能解决你的疑问了,不要对Mysql循环。

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 621 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信